//检测是循环检测的.
//先检测整个-> 然后清除 -> 然后继续检测.
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;
    }
}
Esempio n. 3
0
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;
    }
}