完成第三阶段方块移动与旋转逻辑 完成函数9->13

This commit is contained in:
2026-04-24 08:46:10 +08:00
parent 9637d77759
commit d9c7c36c52
9 changed files with 48 additions and 245 deletions
+43 -8
View File
@@ -189,32 +189,67 @@ bool CanMoveRight()
return true;
}
/**
* @brief 将当前活动方块向下移动一格。
*
* 该函数只负责修改当前活动方块的纵坐标,将其在工作区中的位置向下推进 1 格。
* 是否允许下移由外部配合 CanMoveDown 函数提前判断。
*/
void MoveDown()
{
// TODO(作业9): 方块下移一格
point.y = point.y;
// 当前方块下移一格
point.y++;
}
/**
* @brief 将当前活动方块向左移动一格。
*
* 该函数只负责修改当前活动方块的横坐标,将其在工作区中的位置向左推进 1 格。
* 是否允许左移由外部配合 CanMoveLeft 函数提前判断。
*/
void MoveLeft()
{
// TODO(作业10): 方块左移一格
point.x = point.x;
// 当前方块左移一格
point.x--;
}
/**
* @brief 将当前活动方块向右移动一格。
*
* 该函数只负责修改当前活动方块的横坐标,将其在工作区中的位置向右推进 1 格。
* 是否允许右移由外部配合 CanMoveRight 函数提前判断。
*/
void MoveRight()
{
// TODO(作业11): 方块右移一格
point.x = point.x;
// 当前方块右移一格
point.x++;
}
/**
* @brief 旋转当前活动方块到下一种朝向。
*
* 游戏中的每种方块都预置了 4 种旋转状态,该函数通过切换状态编号实现旋转。
* 当状态增加到 4 时重新回到 0,形成循环旋转效果。
*/
void Rotate()
{
// TODO(作业12): 旋转当前方块。
// 切换到下一种旋转状态
state = (state + 1) % 4;
}
/**
* @brief 让当前活动方块快速下落到当前位置能够到达的最低点。
*
* 该函数会持续检查当前方块是否还能继续下移,只要可以下移就重复调用 MoveDown,
* 直到方块到达底部或被其他固定方块阻挡为止。
*/
void DropDown()
{
// TODO(作业13): 实现“一键到底”。
// 只要还能继续下落,就不断下移
while (CanMoveDown())
{
MoveDown();
}
}
void Fixing()