我需要一个二维数组才能显示为地图。 g_length和w_width是从x和y点开始的时间。需要创建一个循环,其中包含应放置在地图上的裁剪的宽度和长度.x_crop和y_crop是应创建裁剪的x和y坐标。 w_width是width,g_length是位于类中的裁剪的长度或高度。
bool Crop::place(char map[MAPL][MAPW],int x_crop,int y_crop)const{
int y_total =y_crop;
y_total = y_crop + g_length;
for(int x=0; x < MAPW;x++){
if(x==x_crop){
for(int b=0; b < w_width;b++){
if(y_total==y_crop){
map[x][y_crop] = PlantType.symbol();
x++;
y_crop++;
}else{
b=w_width;
}
x++;
}
}
}
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;}
看看输出结果应该是什么样的:
11111111112
12345678901234567890
+--------------------+
1| |
2| |
3| cc |
4| cc |
5| cc |
6| cc |
7| pppppppp |
8| pppppppp |
9| pppppppp |
10| |
+--------------------+
11111111112
12345678901234567890
&GT;
答案 0 :(得分:1)
不要让循环过于复杂:
for (int x = x_crop; x < x_crop + w_width; ++x) {
for (int y = y_crop; y < y_crop + g_height; ++y) {
map[x][y] = PlantType.symbol();
}
}
一些补充说明:
x_crop
和y_crop
的检查,以便保持在地图的范围内map[x][y]
索引的循环中,但参数声明char map[MAPL][MAPW]
表明它应该由map[y][x]