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