如果你看完之前的,那么你基本已经拥有一个消灭星星游戏的雏形。
不过问题又来了,游戏总要结束,那怎么判断游戏是否结束或者游戏进入下一关呢
我们在删除待删除队列的时候(见上一节),不妨加入一个函数,来确定删除完以后,这个游戏是否还能够进行下去
bool StarMatrix::isEnded(){
bool bRet = true;
for(int i=0;i<ROW_NUM;i++){
for(int j=0;j<COL_NUM;j++){
if(stars[i][j] == nullptr)
continue;
int curColor = stars[i][j]->getColor();
//上
if(i-1>=0 && stars[i-1][j]!=nullptr && stars[i-1][j]->getColor() == curColor)
return false;
//下
if(i+1<ROW_NUM && stars[i+1][j]!=nullptr && stars[i+1][j]->getColor() == curColor)
return false;
//左
if(j-1>=0 && stars[i][j-1]!=nullptr && stars[i][j-1]->getColor() == curColor)
return false;
//右
if(j+1<COL_NUM && stars[i][j+1]!=nullp