繁体   English   中英

我的Tic Tac Toe游戏代码中的一个问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM