完成第三阶段方块移动与旋转逻辑 完成函数9->13
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user