0
我正在尝试在地图/网格上放置裁剪。裁剪是需要在地图边框中显示的字符串。我需要使用2d数组来显示将在地图上形成裁切形状的单个字符。这是迄今为止的代码,但它在显示时不会给我正确的形状。使用2d数组显示地图/网格上的坐标
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 << "123456789\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 << "123456789\n";
return true;
}
以下是输出结果的示例。它有两种作物,地图是20宽10高
11111111112
123456789
+--------------------+
1| |
2| |
3| cc |
4| cc |
5| cc |
6| cc |
7| pppppppp |
8| pppppppp |
9| pppppppp |
10| |
+--------------------+
11111111112
123456789
我试过了你的建议,但是当我使用的时候发生了什么事情,那个数组太小了,数组在最大值超过后就抓住了垃圾字符。我的意思是地图必须是10高度和20宽度,所以如果我将它们反转,高度将超过10到20,并获得随机值而不是数组中的字符。 – joshcunningsworth 2014-10-11 03:16:47
您是否在代码中或在循环中切换MAPL和MAPW?我只是在循环中切换它们,并为我工作。基本上你要做的就是让外层循环迭代MAPL时间(地图中的行数),而内层循环迭代MAPW次数(一行中的空间数)。 – 2014-10-11 03:22:57
我只在循环中切换它们,但也许是因为MAPL&MAPW的值是在名为map.h的头文件中定义的。 – joshcunningsworth 2014-10-11 03:26:05