我正在尝试将裁剪放在地图/网格上。裁剪是需要在地图边框中显示的字符串。我需要使用二维数组来显示将在地图上形成裁剪形状的单个字符。这是我到目前为止的代码,但是当它们显示时它没有给我正确的裁剪形状。
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
答案 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;
}
您将一次打印一行(行主要订单)并打印出该字段中的每个空格。