完成 CanMoveDown 函数 完成函数6 根据函数顺序 重新组织TODO List

This commit is contained in:
2026-04-23 20:09:40 +08:00
parent 88ae3f6496
commit 3d8d63929c
4 changed files with 68 additions and 32 deletions
+35 -1
View File
@@ -69,9 +69,43 @@ COLORREF BrickColor[7] =
RGB(168, 0, 168)
};
/**
* @brief 判断当前方块是否可以继续向下移动。
*
* 遍历当前处于活动状态下方块的 4x4 矩阵,计算其下落一步(Y 坐标加 1)后的位置,
* 并检查每个非空方块单元:
* 1. 是否超出了游戏工作区的底部边界(对应数组索引 >= 20)。
* 2. 是否与工作区下方已经固定的其他方块发生碰撞(即对应位置的值不为 0)。
* 如果遇到以上任意一种情况,则认为方块受到阻挡,无法继续下落。
*
* @return bool 如果可以继续安全下落返回 true,否则返回 false。
*/
bool CanMoveDown()
{
// TODO(作业6): 判断当前方块是否可以继续下落。
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
if (bricks[type][state][i][j] != 0)
{
int nextY = point.y + i + 1;
int nextX = point.x + j;
// 检查是否到达底部边界
if (nextY >= nGameHeight)
{
return false;
}
// 检查下方是否有其他固定方块
if (workRegion[nextY][nextX] != 0)
{
return false;
}
}
}
}
return true;
}