【发布时间】:2017-03-04 04:15:51
【问题描述】:
以下代码 sn-p 是井字游戏的一部分。 我遇到的问题是,每当我运行代码并到达我输入行和列的位置时,代码工作得很好,除了一件事。当我输入第 1 行第 1 列时,代码将正确显示第一个 X,但是当我输入第二行第 1 列时,它会用 O 切换网格中的 X,尽管它不应该。我认为 do while 循环中的条件足以在第二次输入行/列组合时不让网格被覆盖。但似乎没有。
char grid[3][3] = {
{' ', ' ', ' '},
{' ', ' ', ' '},
{' ', ' ', ' '}
};
do {
int row, column;
for (int i = 1; i <= 9; i++)
do {
...
...
std::cout << "* Enter row : ";
std::cin >> row;
std::cout << "* Enter column: ";
std::cin >> column;
} while ((row < 1 || row > 3) && (column < 1 || column > 3) && (grid[row-1][column-1] != ' '));
if (i % 2 == 0)
grid[row-1][column-1] = 'O';
else
grid[row-1][column-1] = 'X';
} // For loop close
} while (true);
希望你们能帮助我。祝你有个愉快的夜晚。干杯。
【问题讨论】:
-
你在所有条件都为真时循环(
&&),但如果我理解正确,一个条件为真将是无效的移动(即改用||) -
您是否尝试过使用调试器单步执行代码以查看其具体在做什么?如果没有,为什么不呢?
标签: c++ c++11 conditional-statements c++14 do-while