实现 GameOver 游戏结束判断逻辑 实现函数17

This commit is contained in:
2026-04-24 09:06:04 +08:00
parent 329cf4c5c2
commit 6e038f39ed
4 changed files with 31 additions and 2 deletions
+30 -1
View File
@@ -299,9 +299,38 @@ void DeleteLines()
// TODO(作业16): 完成消行与计分逻辑。
}
/**
* @brief 判断游戏是否结束。
*
* 当新的活动方块生成到初始位置后,如果它的任意一个非空单元
* 与工作区中已经固定的方块发生重叠,则说明顶部已被占满,
* 当前局面无法继续生成新方块,游戏结束。
*
* @return bool 若游戏结束返回 true,否则返回 false。
*/
bool GameOver()
{
// TODO(作业17): 判断游戏是否结束。
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
if (bricks[type][state][i][j] != 0)
{
int checkY = point.y + i;
int checkX = point.x + j;
// 检查新方块生成位置是否与固定方块重叠
if (checkY >= 0 && checkY < nGameHeight && checkX >= 0 && checkX < nGameWidth)
{
if (workRegion[checkY][checkX] != 0)
{
return true;
}
}
}
}
}
return false;
}