只是事先给大家做个说明。这是我第一次上编程课,所以当我什么都不懂的时候请多多包涵。
基本上,对于我的课程期末项目,我决定在 c# (visual studio) 中重新创建俄罗斯方块。听起来很容易对吧?出色地....
现在的问题在于移动块。它会移动,但是,当它被移动时会出现问题。当您将其移到右侧时,该块会消失。
这是手头的方法:
if (e.KeyCode == Keys.D)
{
//run move shape right loop
for (int i = 0; i < height; i++)
{
for (int n = 0; n < width; n++)
{
// check to see if movable first and occupied
if (tetris_grid[n, i, 1] == 0 && tetris_grid[n, i, 0] > 0) //if movable
{
if (n == width - 1) //if at the edge
{
//do nothing
}
else if (tetris_grid[n + 1, i, 1] > 0)
{
//do nothing
}
else
{
tetris_grid[n + 1, i, 0] = tetris_grid[n, i, 0]; //move the contents over
tetris_grid[n, i, 0] = 0; //set the previous location to empty
tetris_grid[n + 1, i, 1] = tetris_grid[n, i, 1];
tetris_grid[n, i, 1] = 0; //set the previous location to empty
n = n + 1; //increment so we don't automatically move to edge
}
}
}
}
//redraw
draw_board();
}
免责声明:我一直在向我的教授寻求帮助,所以移动代码都是他写的。我最初有它,初始数组将其内容移动到另一个数组中,但是他重写了我的代码,使其只是一个 3d 数组,具有一个维度来测量块是否被种植。
我已经查看了堆栈溢出,但其中很多都使用了我以前从未真正学过的代码,我的教授也告诉我不要使用堆栈溢出,但我无能为力,因为我被卡住了。
感谢所有可能的帮助!