井字游戏错误
Error in Tic-Tac-Toe Game
我在创建模拟井字游戏的程序时遇到此 C++ 代码的问题。游戏 运行s "fine",显示获胜者,验证输入等,但如果玩家 'X' 获胜,玩家 'O' 仍然允许在之前进行另一次移动宣布获胜者。
do
{
int turn = 0;
if (turn % 2 == 0)
{
cout << "Player X, Row and Column: ";
cin >> row >> column;
while (array[(row-1)][(column-1)] != '*')
{
cout << "Invalid move try again \n";
cout << "Player X, Row and Column: ";
cin >> row >> column;
}
array[row-1][column-1] = 'X';
showArray(array);
results = checkWin(array);
}
if (turn % 2 != 0)
{
cout << "Player O, Row and Column: ";
cin >> row >> column;
while (array[row-1][column-1] != '*')
{
cout << "Invalid move try again \n";
cout << "Player O, Row and Column: ";
cin >> row >> column;
}
array[row-1][column-1] = 'O';
showArray(array);
results = checkWin(array);
}
turn++;
}while (results == 0);
我正在使用一个在两个玩家之间交替的 do-while 循环。当我将递增 'turn++;' 语句放在两个 if 块之外时,程序只允许玩家 'X' 移动。当我将 'turn++;' 语句放在 player 'X' if 块中时,它交替出现,但我 运行 进入了上述问题。如果您有任何建议,请给他们。谢谢
将 int turn = 0;
移出循环。例如:
int turn = 0;
do {
doSomeThing();
turn++;
} while(someThingHappen());
如果将 int turn = 0
放在循环中,则每个循环都将以 turn = 0
开头
如@hai_uit所说,将int turn = 0;
移出循环。大多数时候,在任何循环或 if 语句之外声明所有变量是个好主意。
每次循环迭代时,回合值都会初始化为 0,这就是每次玩家 'X' 获得机会的原因。
因此将 int turn = 0 放在循环之外。
我在创建模拟井字游戏的程序时遇到此 C++ 代码的问题。游戏 运行s "fine",显示获胜者,验证输入等,但如果玩家 'X' 获胜,玩家 'O' 仍然允许在之前进行另一次移动宣布获胜者。
do
{
int turn = 0;
if (turn % 2 == 0)
{
cout << "Player X, Row and Column: ";
cin >> row >> column;
while (array[(row-1)][(column-1)] != '*')
{
cout << "Invalid move try again \n";
cout << "Player X, Row and Column: ";
cin >> row >> column;
}
array[row-1][column-1] = 'X';
showArray(array);
results = checkWin(array);
}
if (turn % 2 != 0)
{
cout << "Player O, Row and Column: ";
cin >> row >> column;
while (array[row-1][column-1] != '*')
{
cout << "Invalid move try again \n";
cout << "Player O, Row and Column: ";
cin >> row >> column;
}
array[row-1][column-1] = 'O';
showArray(array);
results = checkWin(array);
}
turn++;
}while (results == 0);
我正在使用一个在两个玩家之间交替的 do-while 循环。当我将递增 'turn++;' 语句放在两个 if 块之外时,程序只允许玩家 'X' 移动。当我将 'turn++;' 语句放在 player 'X' if 块中时,它交替出现,但我 运行 进入了上述问题。如果您有任何建议,请给他们。谢谢
将 int turn = 0;
移出循环。例如:
int turn = 0;
do {
doSomeThing();
turn++;
} while(someThingHappen());
如果将 int turn = 0
放在循环中,则每个循环都将以 turn = 0
如@hai_uit所说,将int turn = 0;
移出循环。大多数时候,在任何循环或 if 语句之外声明所有变量是个好主意。
每次循环迭代时,回合值都会初始化为 0,这就是每次玩家 'X' 获得机会的原因。
因此将 int turn = 0 放在循环之外。