[英]An Issue in my Tic Tac Toe game code
我用C ++制作了一个Tic Tac Toe游戏。 我不知道如何输出一个合适的电路板,所以我制作了一个带有标记为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)
您需要使用&&
而不是||
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.