c - 如何在C中向下移动二维数组元素

标签 c arrays debugging tetris

在用 C 语言实现俄罗斯方 block 时,我试图将二维数组的内容向下移动。这是为了将 block 向下移动。该代码可以工作,但它不能仅移动元素一次,请参阅问题的图像(左上角的数字是确定 block 类型的随机数)。任何帮助表示赞赏。 下面是数组移位代码:

//Declare size of board
    int board [22][10] = {};

 //Shift down
    for(i=2;i<20;i++)
    {
        for(z=1;z<10;z++)
        {
            board[i+1][z] = board[i][z];
        }
    }

http://i61.tinypic.com/xlb58g.jpg

最佳答案

每当移动数组的内容时,都必须按照与移动相反的方向进行操作。在您的情况下,您需要反转外循环的方向:

int board [22][10] = {};

for(i = 20; i-- > 2; ) {
    for(z=1; z<9; z++) {
        board[i+1][z] = board[i][z];
    }
}

这使得未使用的值行像气泡一样在数组中上升。

<小时/>

编辑:
编写上面的代码是为了匹配问题中发布的代码的明显预期行为。如果要移动整个数组,请使用以下代码:

for(i = sizeof(board)/sizeof(*board) - 1; i--; ) {
    for(z = 0; z < sizeof(*board)/sizeof(**board); z++) {
        board[i+1][z] = board[i][z];
    }
}

关于c - 如何在C中向下移动二维数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23970721/

相关文章:

c++ - gcc/mingw 中 'startup files' 的来源

c - 什么时候可以完全优化 volatile 变量?

c - 如何在汇编中遍历矩阵?

jquery - 不需要的返回空对象

php - 如何在 laravel 5.4 blade 中找到准确的错误行?

image - 在 PyCharm 中调试时将 numpy 数组视为图像?

debugging - 调试SSIS脚本任务-已启用断点,但未命中

c - 如何在 MS Visual Studio 中使用 SSE 内在函数?

C 将字符一一追加到字符数组中

java - 从 URL 解析 JSON 数据时出现问题