【问题标题】:Using a 2d array to display coordinates on a Map/Grid使用二维数组在地图/网格上显示坐标
【发布时间】:2014-10-11 02:39:06
【问题描述】:

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

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 宽 x 10 高

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

【问题讨论】:

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


    【解决方案1】:

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

    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;
    }
    

    您将一次打印一行(行优先顺序),并将打印出该字段中的每个空格。

    【讨论】:

    • 我尝试了您的建议,但是当我使用该数组时发生的情况是数组太小并且数组在其最大值超过后抓取了垃圾字符。我的意思是地图必须是 10 高度和 20 宽度,所以如果我反转它们,高度会超过 10 到 20 并获得随机值而不是数组中的字符。
    • 您是在代码中的任何地方还是在循环中切换了 MAPL 和 MAPW?我只在循环中切换它们,这对我有用。基本上你要做的就是让外部循环迭代 MAPL 次(地图中的行数),内部循环迭代 MAPW 次(一行中的空格数)。
    • 我也只是在循环中切换了它们,但可能是因为 MAPL 和 MAPW 的值是在名为 map.h 的头文件中定义的
    • MAPL 有 10 个,MAPW 有 20 个吗?
    • 不,我有 const int MAPL=20; const int MAPW=10; 但是如果我切换这些值会改变地图的大小,我需要它仍然是 20 宽和 10 高。
    猜你喜欢
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    • 2013-05-11
    • 1970-01-01
    • 1970-01-01
    • 2014-12-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多