俄罗斯方块明确线问题
本文关键字:问题 方块 俄罗斯 | 更新日期: 2023-09-27 18:31:13
我正在为一个项目制作俄罗斯方块克隆。我差不多完成了,但我的清晰线条课程有一个我无法摆脱的错误。我制作了一个 10*20 的网格,我将精灵绘制到其中。当我在地板上得到一条线时,它工作正常,但在此之上,它只是删除该线并将它下面的所有内容也向下移动。这是我的明行类的代码:
public static void ClearLines()
{
for (int CountY = Game1.LandedBlocks.GetLength(1) - 1; CountY >= 0; CountY--)
{
bool clearLine = true;
for (int CountX = 0; CountX < Game1.LandedBlocks.GetLength(0); CountX++)
{
clearLine &= Game1.LandedBlocks[CountX, CountY] != -1;
}
if (clearLine)
{
for (int CountX = 0; CountX < Game1.LandedBlocks.GetLength(0); CountX++)
{
Game1.LandedBlocks[CountX, CountY] = -1;
}
for (int y = Game1.LandedBlocks.GetLength(1) - 1; y > 0; y--)
{
for (int CountX = 0; CountX < Game1.LandedBlocks.GetLength(0); CountX++)
{
Game1.LandedBlocks[CountX, y] = Game1.LandedBlocks[CountX, y - 1];
}
}
CountY++;
Game1.rows++;
Game1.score += 100;
}
}
}
如果有人能阐明该怎么做,我将不胜感激。我尝试了很多,但没有任何效果:(
看起来问题出在
for (int y = Game1.LandedBlocks.GetLength(1) - 1; y > 0; y--)
{
for (int CountX = 0; CountX < Game1.LandedBlocks.GetLength(0); CountX++)
{
Game1.LandedBlocks[CountX, y] = Game1.LandedBlocks[CountX, y - 1];
}
}
这(我认为)将所有行向下移动一行。问题在于循环边界总是指向第 0 行。您应该只将要清除的任何行上方的行移动。将y > 0
更改为y > lineNumber
其中lineNumber
是清除的行。