使用2d数组显示地图/网格上的坐标

时间:2014-10-11 02:39:07

标签: c++ map grid char multidimensional-array

我正在尝试将裁剪放在地图/网格上。裁剪是需要在地图边框中显示的字符串。我需要使用二维数组来显示将在地图上形成裁剪形状的单个字符。这是我到目前为止的代码,但是当它们显示时它没有给我正确的裁剪形状。

bool Crop::place(char map[MAPL][MAPW],int x_crop,int y_crop)const{

cout << '\n';
cout << setw(24) << right << "11111111112\n";
cout << setw(24) << right << "12345678901234567890\n";
cout << "  " << setw(21) << setfill('-') << left << '+' << right << '+' << setfill (' ') <<     endl;



for(int x=0; x < MAPW;x++){
    cout << setw(2) << right << x+1 << "|";
    for(int y=0; y < MAPL;y++){
        cout << map[x][y];

    }
    cout << "|" << endl;
}

cout << "  " << setw(21) << setfill('-') << left << '+' << right << '+' << setfill (' ') << endl;
cout << setw(24) << right << "11111111112\n";
cout << setw(24) << right << "12345678901234567890\n";

return true;
}

以下是输出应该是什么样子的示例。它在地图上有两个作物“c”和“p”,宽度为20宽×10。

            11111111112
   12345678901234567890
  +--------------------+
 1|                    |
 2|                    |
 3|    cc              |
 4|    cc              |
 5|    cc              |
 6|    cc              |
 7|           pppppppp |
 8|           pppppppp |
 9|           pppppppp |
10|                    |
 +--------------------+
            11111111112
   12345678901234567890

1 个答案:

答案 0 :(得分:0)

看起来你所拥有的是一个横向错误。在循环中:

for(int x=0; x < MAPW;x++){
    cout << setw(2) << right << x+1 << "|";
    for(int y=0; y < MAPL;y++){
        cout << map[x][y];
    }
    cout << "|" << endl;
}

您一次打印一列而不是一次打印一列(列主要顺序),因此它会侧向打印您的字段。如果切换MAPW和MAPL(并切换x和y以使变量描述此更改),则执行

for(int y=0; y < MAPL;y++){
    cout << setw(2) << right << y+1 << "|";
    for(int x=0; x < MAPW;x++){
        cout << map[y][x];
    }
    cout << "|" << endl;
}

您将一次打印一行(行主要订单)并打印出该字段中的每个空格。