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]; } } }
//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(); } } } }