do-while loop within for is not wokirng
do-while loop within for is not wokirng
我陷入了编写井字游戏的困境。我需要你的帮助。基本上,我的问题是,为什么我的do while循环在c++中的代码中不起作用。我正在使用VS C++2015。
背后的基本逻辑如下;
- 创建3乘3的数组,并将1-9作为char
- 设置一个for循环和if语句,让玩家输入X或O。如果i为0或偶数,则轮到玩家1输入X。如果奇数,则轮到选手2将O作为字符
- 在do-while循环中,我想检查玩家是否选择了已经选择的单元格。但do-white循环似乎根本不起作用
- 通过if语句检查一行中是否有3个X或O
请让我知道解决这个问题的关键点是什么。。。非常感谢!
#include <iostream>
#include "tic_tac_toe.h"
using namespace std;
int tic_tac_toe() {
cout << "You chose tic tac toe game!:) n";
char t[] = { '1', '2' ,'3' , '4', '5', '6', '7', '8', '9' };
cout << "_" << t[0] << "_|_" << t[1] << "_|_" << t[2] << "_n";
cout << "_" << t[3] << "_|_" << t[4] << "_|_" << t[5] << "_n";
cout << " " << t[6] << " | " << t[7] << " | " << t[8] << " n";
for (int i = 0; i < 9; i++) {
if (i == 0 || i % 2 == 0) {
cout << "Player 1, your trun. Please choose a number to put X. n";
int n1;
cin >> n1;
do {
cout << "You cannot overwrite on X or O. Please in put again. n";
cin >> n1;
} while (t[n1 - 1] == 'X' || t[n1 - 1] == 'O');
t[n1 - 1] = 'X';
}
else {
cout << "Player 2, your trun. Please choose a number to put O. n";
int n2;
cin >> n2;
do {
cout << "You cannot overwrite on X or O. Please in put again. n";
cin >> n2;
} while (t[n2 - 1] == 'X' || t[n2 - 1] == 'O');
t[n2 - 1] = 'O';
}
cout << "_" << t[0] << "_|_" << t[1] << "_|_" << t[2] << "_n";
cout << "_" << t[3] << "_|_" << t[4] << "_|_" << t[5] << "_n";
cout << " " << t[6] << " | " << t[7] << " | " << t[8] << " n";
if (t[0] == 'X' && t[1] == 'X' && t[2] == 'X' ||
t[3] == 'X' && t[4] == 'X' && t[5] == 'X' ||
t[6] == 'X' && t[7] == 'X' && t[8] == 'X' ||
t[0] == 'X' && t[3] == 'X' && t[6] == 'X' ||
t[1] == 'X' && t[4] == 'X' && t[7] == 'X' ||
t[2] == 'X' && t[5] == 'X' && t[8] == 'X' ||
t[0] == 'X' && t[4] == 'X' && t[7] == 'X' ||
t[2] == 'X' && t[4] == 'X' && t[6] == 'X' ) {
cout << "Player 1, you won! n";
break;
}
else if(t[0] == 'O' && t[1] == 'O' && t[2] == 'O' ||
t[3] == 'O' && t[4] == 'O' && t[5] == 'O' ||
t[6] == 'O' && t[7] == 'O' && t[8] == 'O' ||
t[0] == 'O' && t[3] == 'O' && t[6] == 'O' ||
t[1] == 'O' && t[4] == 'O' && t[7] == 'O' ||
t[2] == 'O' && t[5] == 'O' && t[8] == 'O' ||
t[0] == 'O' && t[4] == 'O' && t[7] == 'O' ||
t[2] == 'O' && t[4] == 'O' && t[6] == 'O' )
{
cout << "Player 2, you won! n";
break;
}
}
return 0;
}
您应该使用while而不是do…while
对于第一个玩家,你的代码应该是这样的
while (t[n1 - 1] == 'X' || t[n1 - 1] == 'O'){
cout << "You cannot overwrite on X or O. Please in put again. n";
cin >> n1;
}
对于第二个玩家,
while (t[n2 - 1] == 'X' || t[n2 - 1] == 'O'){
cout << "You cannot overwrite on X or O. Please in put again. n";
cin >> n2;
}
相关文章:
- OpenMP卸载说'fatal error: could not find accel/nvptx-none/mkoffload'
- 使用JsonCpp将数据返回到带有pybind11的python会在python调用中产生Symbol not foun
- OpenCV Android C++ imwrite not found
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 使用单词"not"作为C ++类的名称会导致VS2019错误
- 错误"Could not find Boost"(缺少:上下文标头)
- 如何修复"error: ‘_1’ was not declared in this scope"?
- 套接字连接"Operation not permitted"错误,甚至使用升压/平发器根.cpp
- Is !NaN not a NaN?
- 为什么我会" void value not ignored as it ought to be"?
- 解决"ld: library not found for -ltensorflow_framework.2.3.0"
- 加载与引用 .NET DLL 位于同一文件夹中的引用的 .NET DLL 时"Not found"异常
- Directx 11 - CompileFromFile() is not compiling
- 方法错误"not all control paths return a value"和方法不返回值
- Centos7 g++ "to_string is not in a member of std"
- 将系数存储在头文件的数组中("does not name a type"错误)
- QGraphicsItems not showing up QGraphicsScene
- 在调试模式下引发C++ "deque iterator not dereferencable"异常
- InitializeCriticalSectionEx Not Located In KERNEL32.Dll
- do-while loop within for is not wokirng