Exemple #1
0
void Life::update()
{
    int row,col;
    int new_grid[maxrow+2][maxcol+2];
    for(row=1;row<=maxrow;row++)
    {
        for(col=1;col<=maxcol;col++)
        {
            switch(neighbor_count(row,col))
            {
                case 2:
                    new_grid[row][col]=grid[row][col];
                    break;
                case 3:
                    new_grid[row][col]=1;
                    break;
                default:
                    new_grid[row][col]=0;
                    break;
            }
        }
    }
    for(row=1;row<=maxrow;row++)
    {
        for(col=1;col<=maxcol;col++)
        {
            grid[row][col]=new_grid[row][col];
        }
    }
}
Exemple #2
0
//1. 如果一个细胞周围有3个细胞为生(一个细胞周围共有8个细胞),则该细胞为生(即该细胞若原先为死,则转为生,若原先为生,则保持不变) 。
//2. 如果一个细胞周围有2个细胞为生,则该细胞的生死状态保持不变;
//3. 在其它情况下,该细胞为死(即该细胞若原先为生,则转为死,若原先为死,则保持不变)。
void PlayLayer::LifePlay(float dt)
{

	if (mLevelStatus ==STOP || mLevelStatus == PAUSE)
	{
		return;
	}

	int size = 0;
	STAUS mStatus[GAME_ROWS][GAME_COLS];
	for (int i= 0;i <GAME_ROWS;i++)
	{
		for (int j= 0;j<GAME_COLS;j++)
		{

			CCLOG("PLAYER mRow:%d,mCol:%d",i,j);
			switch (neighbor_count(i,j))
			{
			case 2:
				CCLOG("***********COUNT = 2*************");
				mStatus[i][j] = players[i][j]->staus;
				break;
			case 3:
				CCLOG("***********COUNT = 3*************");
				mStatus[i][j] = NOT_DIE;
				break;
			default:
				CCLOG("***********COUNT = OTHER*************");
				mStatus[i][j]  = DIE;
				break;
			}
		}
	}
	for (int i= 0;i <GAME_ROWS;i++)
	{
		for (int j= 0;j<GAME_COLS;j++)
		{
			players[i][j]->staus = mStatus[i][j];
			if (players[i][j]->staus ==  NOT_DIE)
			{
				players[i][j]->setNotDieColor();
			}else
			{
				players[i][j]->setDieColor();
			}
		} 
	}
}