完善运行链路 调整中文界面

This commit is contained in:
2026-04-24 10:18:43 +08:00
parent 5f7d7d9949
commit 2f477272ab
3 changed files with 161 additions and 14 deletions
+33 -4
View File
@@ -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();
}
/**