如何将二进制矩阵绘制到显示器上

How to draw a binary matrix to the display

我正在用 C++ 为入门项目重新创建俄罗斯方块。我正在使用 allegro 进行用户输入和绘图到显示器。每个动作、移动、旋转都被插入到一个 2x2 矩阵。现在我被困在将实际矩阵绘制到屏幕上。 这是我当前的代码:

void drawGrid(int grid[10][20]) { // Draws the grid to the screen
    for (int y = 0; y < 20; y++) {
        for (int x = 0; x < 10; x++) {
            if (grid[x][y] == 1) {
                al_draw_filled_rectangle(x * 32 + 10, y * 32, x * 32 + 10 + 32, y * 32 + 32,
                                     al_map_rgb(255, 255, 255)); // Draws a white square, 32x32
            }
        }
    }
}

它显示旋转 90 度的白色方块,并且在方块之间有一些随机的空格。例如

我要打印的网格:

0011000000
0001100000
0000000000
0000000000
0000000000
0000000000
0000000000
0000000000
0000000000
0000000000
0000000000
0000000000
0000000000
0000000000
0000000000
0000000000
0000000000
0000000000
0000000000
0000000000

我得到的结果:

我可以告诉你,你的矩阵图片与你传递给函数的二维数组不匹配。该函数采用 20 列的 10 红色数组。您的图片是倒置的,因此屏幕的着色方式是倒置的。如果你想绘制你在绘图上的内容,只需切换行和列,所以传入一个 [20][10]

的数组