我用 C++ 制作了一个井字游戏。我不知道如何输出合适的板,所以我制作了一个带有标记为 1-9 的数组的网格,让用户输入数字以告诉计算机将他的镜头放在哪里。第二个玩家是电脑。我很高兴,因为这是我的第一个工作程序,但代码有问题,有时,并非总是,在退出前输出“无效”,我用这个词告诉用户输入无效数字.有人能帮我理解为什么会这样以及我代码中的逻辑吗,因为过了一段时间,连我自己都对自己写的东西感到困惑。非常感谢,谢谢。
/*
* Tic Tac Toe Game
*
*
*/
#include <iostream>
#include <string>
#include <time.h>
#include <cstdlib>
using namespace std;
int main() {
int tic[3][3] = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
int entered = 0;
int myrandom;
int cswitcher, uswitcher;
int gameover = 0;
srand(time(0));
while(gameover != 1) {
cswitcher = 0;
uswitcher = 0;
cout << tic[0][0] << tic[0][1] << tic[0][2] << endl;
cout << tic[1][0] << tic[1][1] << tic[1][2] << endl;
cout << tic[2][0] << tic[2][1] << tic[2][2] << endl;
while (uswitcher != 1) {
cout << "Pick your turn" << endl;
cin >> entered;
if (entered >= 1 || entered <= 9) {
switch (entered) {
case 1: if (tic[0][0] != 0) {tic[0][0] = 0; uswitcher = 1;} else {cout << "Invalid\n"; uswitcher = 0; continue;} break;
case 2: if (tic[0][1] != 0) {tic[0][1] = 0; uswitcher = 1;} else {cout << "Invalid\n"; uswitcher = 0; continue;} break;
case 3: if (tic[0][2] != 0) {tic[0][2] = 0; uswitcher = 1;} else {cout << "Invalid\n"; uswitcher = 0; continue;} break;
case 4: if (tic[1][0] != 0) {tic[1][0] = 0; uswitcher = 1;} else {cout << "Invalid\n"; uswitcher = 0; continue;} break;
case 5: if (tic[1][1] != 0) {tic[1][1] = 0; uswitcher = 1;} else {cout << "Invalid\n"; uswitcher = 0; continue;} break;
case 6: if (tic[1][2] != 0) {tic[1][2] = 0; uswitcher = 1;} else {cout << "Invalid\n"; uswitcher = 0; continue;} break;
case 7: if (tic[2][0] != 0) {tic[2][0] = 0; uswitcher = 1;} else {cout << "Invalid\n"; uswitcher = 0; continue;} break;
case 8: if (tic[2][1] != 0) {tic[2][1] = 0; uswitcher = 1;} else {cout << "Invalid\n"; uswitcher = 0; continue;} break;
case 9: if (tic[2][2] != 0) {tic[2][2] = 0; uswitcher = 1;} else {cout << "Invalid\n"; uswitcher = 0; continue;} break;
}
} else {continue;}
}
while (cswitcher != 1) {
myrandom = rand()%9+1;
switch (myrandom) {
case 1: if (tic[0][0] != 0) {tic[0][0] = 0; cswitcher = 1;} else {cswitcher = 0; continue;} break;
case 2: if (tic[0][1] != 0) {tic[0][1] = 0; cswitcher = 1;} else {cswitcher = 0; continue;} break;
case 3: if (tic[0][2] != 0) {tic[0][2] = 0; cswitcher = 1;} else {cswitcher = 0; continue;} break;
case 4: if (tic[1][0] != 0) {tic[1][0] = 0; cswitcher = 1;} else {cswitcher = 0; continue;} break;
case 5: if (tic[1][1] != 0) {tic[1][1] = 0; cswitcher = 1;} else {cswitcher = 0; continue;} break;
case 6: if (tic[1][2] != 0) {tic[1][2] = 0; cswitcher = 1;} else {cswitcher = 0; continue;} break;
case 7: if (tic[2][0] != 0) {tic[2][0] = 0; cswitcher = 1;} else {cswitcher = 0; continue;} break;
case 8: if (tic[2][1] != 0) {tic[2][1] = 0; cswitcher = 1;} else {cswitcher = 0; continue;} break;
case 9: if (tic[2][2] != 0) {tic[2][2] = 0; cswitcher = 1;} else {cswitcher = 0; continue;} break;
}
}
if (tic[0][0] + tic[0][1] + tic[0][2] == 0 || tic[1][0] + tic[1][1] + tic[1][2] == 0 ||
tic[2][0] + tic[2][1] + tic[2][2] == 0 || tic[0][0] + tic[1][0] + tic[2][0] == 0 ||
tic[0][1] + tic[1][1] + tic[2][1] == 0 || tic[0][2] + tic[1][2] + tic[2][2] == 0 ||
tic[0][0] + tic[1][1] + tic[2][2] == 0 || tic[2][0] + tic[1][1] + tic[0][2] == 0) {gameover = 1; break;}
}
return 0;
}
最佳答案
你的错误是由于这一行:
if (entered >= 1 || entered <= 9)
您需要使用&&
而不是||
。
关于c++ - 我的 Tic Tac Toe 游戏代码中的一个问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23524985/