完善运行链路 调整中文界面
This commit is contained in:
@@ -228,13 +228,40 @@ void MoveRight()
|
||||
/**
|
||||
* @brief 旋转当前活动方块到下一种朝向。
|
||||
*
|
||||
* 游戏中的每种方块都预置了 4 种旋转状态,该函数通过切换状态编号实现旋转。
|
||||
* 当状态增加到 4 时重新回到 0,形成循环旋转效果。
|
||||
* 游戏中的每种方块都预置了 4 种旋转状态,该函数会先尝试切换到下一状态,
|
||||
* 然后检查旋转后的方块是否越界或与固定方块重叠。
|
||||
* 如果旋转后的状态非法,则恢复到旋转前的状态。
|
||||
*/
|
||||
void Rotate()
|
||||
{
|
||||
// 切换到下一种旋转状态
|
||||
int oldState = state;
|
||||
state = (state + 1) % 4;
|
||||
|
||||
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 (checkX < 0 || checkX >= nGameWidth || checkY < 0 || checkY >= nGameHeight)
|
||||
{
|
||||
state = oldState;
|
||||
return;
|
||||
}
|
||||
|
||||
// 旋转后若与固定方块重叠,则恢复原状态
|
||||
if (workRegion[checkY][checkX] != 0)
|
||||
{
|
||||
state = oldState;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -258,7 +285,7 @@ void DropDown()
|
||||
* 遍历当前方块 4x4 形状矩阵,把其中所有非空单元写入工作区数组,
|
||||
* 表示该方块已经落地并转为固定状态。
|
||||
* 随后将“下一方块”切换为新的当前方块,重置旋转状态,
|
||||
* 并把新方块生成到工作区上方的初始位置。
|
||||
* 并把新方块生成到工作区上方的初始位置,同时刷新预测落点。
|
||||
*/
|
||||
void Fixing()
|
||||
{
|
||||
@@ -286,6 +313,8 @@ void Fixing()
|
||||
state = 0;
|
||||
point.x = 3;
|
||||
point.y = 0;
|
||||
target = point;
|
||||
ComputeTarget();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user