0

我无法为游戏地图设计创建矩阵。

void prepareMatrix(int width, int height)
{
    room = new int[height][width];
    for(int i = 0; i < height; i++)
    {
        for(int j = 0; j < width; j++)
        {
            if(i < height/4)
            {
                room[i][j] = 2;
            }
            else if(j == 0 || j == --width)
            {
                room[i][j] = 1;
            }
            else if(i == --height)
            {
                room[i][j] = 1;
            }
            else
            {
                room[i][j] = 0;
            }
        }
    }
}

我想创建这样的东西:(1- Wall1, 2- wall2, 0-floor)

2 2 2 2 2 2
2 2 2 2 2 2
1 0 0 0 0 1
1 0 0 0 0 1
1 0 0 0 0 1
1 1 1 1 1 1

我明白了:

2 2 2 2 2 2 2 2 2 2 
2 2 2 2 2 2 2 2 2 2 
1 0 0 0 0 1 0 0 0 0 
1 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 

该矩阵将是地图的蓝图。

4

2 回答 2

3

您正在使用--width--height。从预期结果中可以看出,您希望 1 出现在第一列和最后一列以及最后一行中。正如评论者所暗示的那样,--width不仅返回宽度减一,它还将宽度减少 1。您可能想要width - 1andheight - 1代替。

于 2018-01-27T22:26:00.950 回答
0

就像 M. Aroosi 所说,尝试将 --width 更改为 width-1,将 --height 更改为 height-1。您不想修改参数的值。我认为正在发生的事情是,每次通过循环时,宽度和高度的值都会发生变化。

于 2018-01-27T22:26:43.107 回答