所以我有一个二维数组我用作网格图,其中每个数组块都是地图上的空格。
所以在我的主要()中我已经初始化了数组' Map'与
char Map[ROWS][COLS]={'x'};
ROWS = 10且COLS = 20
稍后我用
调用函数PrintMapvoid PrintMap(const char Map[ROWS][COLS], const bool showTreasure)
{
for (int countr=0; countr<ROWS;countr++){
for (int countc=0; countc<COLS;countc++){ //print map
if (!showTreasure){
if (Map[countr][countc]!='T')
cout << Map[countr][countc];
else
cout << '*';
} else {
cout << Map[countr][countc];
}
}
cout << endl;
}
}
网格上的一个空间是游戏中的宝藏或目标所在的位置。在PrintMap的参数中是bool showTreasure,这是你想要一个&#39; T&#39;要显示在地图上,或者如果要隐藏它。
因此阵列中的一个空格将是一个&#39; T&#39;而所有其他人将是&#39; *&#39;,&#39; X&#39;或&#39; P&#39;。
*是无所不在的地方。
所以if语句应该说:如果showTreasure为false(意味着你想要隐藏&#39; T&#39;):如果它不是&#,你打印数组中的内容39; T&#39;或打印&#39; *&#39;如果是T。
现在我的问题是,即使我已经用200 * s初始化了数组,当我运行程序时它只打印出1 *。
答案 0 :(得分:2)
如果你的初始化是这一行:
char Map[ROWS][COLS]={'x'};
然后将矩阵初始化为单个x
,后跟199个NULL字符。
请参阅https://stackoverflow.com/a/201116/29157的优秀解释。
有关std::fill()
的详情,请参阅https://stackoverflow.com/a/3948314/29157
感谢您的提示,CantChooseUsernames!