0

好的,我被困在程序的特定部分。我试图根据它在二维数组中的位置简单地绘制矩形

二维数组存储我尝试使用画布绘制的迷宫(以文本/字符形式)。例如,它存储以下内容:

AAAAAAAAAAAAAAAAAAA
A                 A
A                 A
A                 A
A                 A
A                 A
A                 A
AAAAAAAAAAAAAAAAAAA

我这样写我的代码:

void MazeGame::DrawMap(Canvas &canvas, char (&map)[26][20])
{ 
    double drawx = 200; 
    double drawy = 200;
        for(int i = 0; i < 20; i++)
        {
            for(int j = 0; j < 26; j++)
            {
                if(map[i][j] == 'A')
                {
                    drawx+=10;
                    drawy+=10;
                    canvas.DrawFillRect(drawx*j, drawy, 10, 10);

                }
            }

        }

对于 canvas.DrawFillRect 中的参数,前两个参数是 x 和 y 坐标/值,后两个是矩形的宽度和长度

有人告诉我,我的错误是我没有修改 drawx 和 drawy,而是修改了 i & j。我知道 i & j 需要在 DrawFillRect 的参数中,但我只是看不到任何其他写这个的方式,而它似乎没有修改 i & j。

我想如果我修改 drawx & drawy,它会正确绘制迷宫

有什么建议么?真的坚持这一点,我不太擅长 C++

4

1 回答 1

0

我不确定您是否打算开始绘制 200 像素,所以我只是添加了变量来处理它。您需要做的是根据 x 和 y 坐标以 10 个像素的间隔绘制矩形,这些坐标由i和给出j。示例:如果j为 2,那么width*j将为您提供第三列矩形的 x 坐标,或从左侧算起 20 个像素。变量offsetxoffsety用于控制从侧面和顶部开始绘制的距离。width, height, offsetx, 并且offsety不需要更改,因为它们定义了设置的像素数量。i并且j是唯一需要在此处更改的变量,因为它们将字符从数组中取出并告诉程序在哪里绘制。

void MazeGame::DrawMap(Canvas &canvas, char (&map)[26][20])
{ 
    double width = 10;  // define the width and height here so that if they need
    double height = 10; // to change, it's all in one place
    double offsetx = 200;
    double offsety = 200;
    for(int i = 0; i < 20; i++)
    {
        for(int j = 0; j < 26; j++)
        {
            if(map[i][j] == 'A')
            {
                canvas.DrawFillRect(width * j + offsetx,
                                    height * i + offsety,
                                    width, height);
            }
        }
    }
于 2013-05-16T15:09:52.520 回答