井字游戏中的错误
Error in Tic-Tac-Toe Game
在创建模拟井字游戏的程序时,我在使用此C++代码时遇到问题。游戏运行"正常",显示获胜者,验证输入等,但如果玩家"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++;"语句放在玩家"X"if块中时,它会交替出现,但我遇到了上述问题。如果您有任何建议,请给他们。谢谢。
每次循环迭代时,回合值都会初始化为 0,这就是为什么每次玩家"X"都有机会的原因。
所以把 int turn = 0,放在循环之外。
正如@hai_uit所说,将int turn = 0;
移出循环。大多数情况下,最好在任何循环或 if 语句之外声明所有变量。
将int turn = 0;
移出循环。 例如:
int turn = 0;
do {
doSomeThing();
turn++;
} while(someThingHappen());
如果您将int turn = 0
放在循环中,则每个循环都将以turn = 0
相关文章:
- 我是 c++ 的新手.学习基本知识后,我想做井字游戏.对于印刷板,我在下面写代码,但它显示错误
- 我在贪吃蛇游戏中收到了错误代码 -1073741571
- 我的游戏引擎的 spdlog 日志记录出现奇怪的"unresolved external symbol"错误
- C++ 中连接 4 游戏的输入逻辑错误
- Visual Studio 中的 lcr 游戏 c++ LINK 2019 错误
- 游戏引擎 SFML C++错误
- C++ do/while 循环和 if/else: 骰子游戏 -- 第 75 行错误:"Cout"之前的预期"While" -- 如何解决这个问题?
- C++随机猜数游戏错误
- 井字游戏中的错误
- 我正在尝试安装游戏引擎,但遇到错误
- 致命错误LNK1169:在C++Visual Studio中编写战舰游戏时发现的一个或多个多重定义的符号
- C++ 抛出读取访问冲突错误,但我不确定为什么。平铺滑块益智游戏
- 如何使用运行时检查错误来修复我的C 格斗游戏
- 我在使用C 的Hangman游戏中遇到错误
- C TIC TAC TOE游戏.开关空间而不是错误消息
- 我正在尝试学习使用 SDL 制作游戏。我的书教SDL1.2.3,我无法让它在Visual Studio上工作。谁能帮忙?我的错误:
- C 猜测游戏错误与某事
- 在Windows 8上设置COCOS 2DX游戏开发环境中的错误
- 错误 C2512 和 C3892 - 像游戏一样构建吃豆人
- C++强力球 - 文件拆分和错误(游戏类型)