//检测是循环检测的. //先检测整个-> 然后清除 -> 然后继续检测. void PatternMatrix::detectionMatrix() { if(!mUpdateLogic) return; int** matrixMark = createIntArray(m_nMatrixRow, m_nMatrixCol, 0); for (int col=0; col< m_nMatrixCol; col++) { for (int row=0; row < m_nMatrixRow; row++) { getResultByPoint(row, col, matrixMark); } } if (clearSomePatterns(matrixMark) == 0) { bool bRet = true; for (int col = 0; col < m_nMatrixCol && bRet; col++) { for (int row=0; row < m_nMatrixRow && bRet; row++) { if (mPatternsSpr[row][col] == NULL || mPatternsSpr[row][col]->g_ePatternStatus != Status_Normal) bRet = false; } } if (bRet) excludeDeadlock(); } delete [] matrixMark; }
void PatternMatrix::onSwapFinish(CCNode* pNode, void* pPattern) { PatternSprite* pfPattern = (PatternSprite*) pPattern; PatternSprite* psPattern = pfPattern->g_pSwapPattern; pfPattern->g_ePatternStatus = Status_Normal; psPattern->g_ePatternStatus = Status_Normal; if (pfPattern->g_bIsRecover) { onClearFinish(NULL, NULL); } else { int** matrixMark = createIntArray(m_nMatrixRow, m_nMatrixCol, 0); //如果交换之后 可以消除,那么执行消除动画. if (getResultByPoint(pfPattern->m_nRowIndex, pfPattern->m_nColIndex, matrixMark) | getResultByPoint(psPattern->m_nRowIndex, psPattern->m_nColIndex, matrixMark)) { clearSomePatterns(matrixMark); } else //没有匹配成功. { swapTwoPattern(pfPattern, psPattern, true); //gSharedEngine.playEffect(EFFECT_PATTERN_UN_SWAP); } delete []matrixMark; } }
int main() { int *a,n; printf("Enter How Many Number? -> "); scanf("%d",&n); a = createIntArray(n); arrayInputPointer(a,n); flagBubbleSort(a,n); printf("After Sorting:\n"); printArray(a,n); return 0; }
bool PatternMatrix::initWithGameMode(eGameMode mode) { if(!CCLayer::init()) { return false; } gGameMode = mode; winSize = CCDirector::sharedDirector()->getVisibleSize(); CCSprite* background = CCSprite::create("background.jpg"); background->setPosition(ccp(winSize.width/2, winSize.height/2)); this->addChild(background); mPatternBatchNode = CCSpriteBatchNode::create("baseResource.png", MATRIX_ROW_MAX * MATRIX_COL_MAX * 2); this->addChild(mPatternBatchNode, 1); mCheckMarkSpr = CCSprite::createWithSpriteFrameName("pattern_selected.png"); mCheckMarkSpr->setScale(2.4); mCheckMarkSpr->setPosition(ccp(-100.0,-100.0)); addChild(mCheckMarkSpr, 1); mPromptMarkSpr = CCSprite::createWithSpriteFrameName("pattern_selected.png"); mPromptMarkSpr->setScale(2.4); mPromptMarkSpr->setPosition(ccp(-100.0, -100.0)); addChild(mPromptMarkSpr, 1); mPromptMarkSpr->runAction(CCRepeatForever::create(CCSequence::create(CCFadeIn::create(1.0), CCFadeOut::create(1.0), NULL))); InitData(); initProgressWithGameMode(); initLabels(); PatternBg = CCRenderTexture::create(768, 1280); PatternBg->setPosition( winSize.width / 2, winSize.height /2); this->addChild(PatternBg); initArrayFrames(); mPatternsPos = createIntArray(MATRIX_ROW_MAX, MATRIX_COL_MAX, CCPointZero); mPatternsSpr = createIntArrays(MATRIX_ROW_MAX, MATRIX_COL_MAX, NULL); return true; }
void addBenchArg(struct benchmark* bench, struct benchArg* arg) { long i; if (bench->start == NULL) { bench->start=arg; bench->current=bench->start; } else { bench->current->next=arg; bench->current=bench->current->next; } /* We need to create the storage for the output as it was not transmitted by the client */ if (bench->current->isOutput == OUT_MODE) { switch(bench->current->data.dataType) { case kINT_STREAM: bench->current->data.value.intArray=createIntArray(bench->current->data.value.arrayLength); break; case kREAL_STREAM: bench->current->data.value.realArray=createRealArray(bench->current->data.value.arrayLength); break; case kFLOAT4_STREAM: bench->current->data.value.float4Array=createFloat4Array(bench->current->data.value.arrayLength); break; } } /* We need to generate the data for the generators */ switch(bench->current->gen.generatorType) { case kCONST_GENERATOR: switch(bench->current->data.dataType) { case kINT_STREAM: bench->current->data.value.intArray=createIntArray(bench->current->gen.genData.constant.nb); for(i=0; i<bench->current->gen.genData.constant.nb; i++) { bench->current->data.value.intArray->samples[i]=bench->current->gen.genData.constant.intValue; } break; case kREAL_STREAM: bench->current->data.value.realArray=createRealArray(bench->current->gen.genData.constant.nb); for(i=0; i<bench->current->gen.genData.constant.nb; i++) { bench->current->data.value.realArray->samples[i]=bench->current->gen.genData.constant.floatValue; } break; case kFLOAT4_STREAM: bench->current->data.value.float4Array=createFloat4Array(bench->current->gen.genData.constant.nb); for(i=0; i<bench->current->gen.genData.constant.nb; i++) { bench->current->data.value.float4Array->samples[i].s[0]=bench->current->gen.genData.constant.floatValue; bench->current->data.value.float4Array->samples[i].s[1]=0; bench->current->data.value.float4Array->samples[i].s[2]=0; bench->current->data.value.float4Array->samples[i].s[3]=0; } break; } break; } }