-1

我正在尝试编写地牢爬行游戏,但编译器无法正确打印出我的网格,由于某种原因,它只打印出每行中的第一个元素,而不会给我任何错误消息。

#include <iostream>

using namespace std;

int main(){

char myGrid[7][10]{{'.', '.', '.', '.', '.', '.', '.', '.', '.', '.'},
                   {'.', '.', 'P', '.', '.', '.', '.', 'T', '.', '.'},
                   {'.', '.', '.', '.', '.', '.', '.', '.', '.', '.'},
                   {'.', '.', '.', '.', 'T', '.', '.', '.', '.', '.'},
                   {'.', '.', '.', '.', '.', '.', 'T', '.', '.', '.'},
                   {'.', '.', 'T', '.', '.', '.', '.', '.', '.', '.'},
                   {'.', '.', '.', '.', 'X', '.', '.', '.', '.', '.'}};

for(int i = 0; i < 7; i++){
    for(int j = 0; j < 10; j++){
        cout << myGrid[i][j] << " ";
        if(j = 9){
            cout << endl;
        }
    }
}
}

这是我从控制台得到的输出:

.

.

.

.

.

.

.

4

1 回答 1

3

问题在于:if(j = 9). 你需要一个双等于来比较。在这里,您分配给j,这使它跳过该行的其余部分。

不请自来的建议:

  1. 避免对常量进行硬编码(例如,7、10、9)。用于sizeof数组,或者至少是一个常量值,例如const auto rows = 7;.
  2. 如果你得到更复杂或更大的地图,你可能应该从原始数组移到std::vector或者可能是std::array. 如果你这样做,你可以使用myGrid.size()and来解决 #1 myGrid[row].size()
  3. 使用'\n'而不是std::endl.
于 2019-02-25T13:17:47.083 回答