我一直在研究这个俄罗斯方块教程,我遇到了删除行并将行/s 降低一级的功能。我有点理解这些功能发生了什么,但有些部分让我感到困惑。我会尽力解释它,但如果你需要,这里是课程的链接:http: //javilop.com/gamedev/tetris-tutorial-in-c-platform-independent-focused-in-初学者的游戏逻辑/
对我来说,这看起来像是一个让数组从一行的最后一个数字开始的函数:
void Board::DeleteLine (int pY)
{
// Moves all the upper lines one row down
for (int j = pY; j > 0; j--)
{
for (int i = 0; i < BOARD_WIDTH; i++)
{
mBoard[i][j] = mBoard[i][j-1];
}
}
}
然后,有一个导致我出现问题的功能,我将解释:
void Board::DeletePossibleLines ()
{
for (int j = 0; j < 20; j++)
{
int i = 0;
while (i < 10)
{
if (mBoard[i][j] != 1) break;
i++;
}
if (i == 10) DeleteLine (j);
}
}
如果您不熟悉,这里的想法是删除完全由1
. 但是if (mBoard[i][j] != 1) break;
如果第一行不是1
. 如果阻止它立即执行任何可能的操作,循环将如何到达位于数组1
中间某处的a?mBoard[][]
break
我在这里错过了什么吗?这是我对它的解释。也许有人看到了我没有看到的东西?
编辑:
感谢回复,感激不尽。