Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ c++;Tic-Tac-Toe程序_C++_Tic Tac Toe - Fatal编程技术网

C++ c++;Tic-Tac-Toe程序

C++ c++;Tic-Tac-Toe程序,c++,tic-tac-toe,C++,Tic Tac Toe,所以我一直在建立一个Tic-Tac-Toe项目,目前仍在进行中。到目前为止,我还没有发现任何构建错误,但目前我遇到的主要问题是,当播放器1输入第一个数字时,程序刚好关闭。我想这是因为Input()函数,但是在浏览了大约3次代码之后,我发现了一个空白,不知道是什么导致了它。以下是相关代码: #include <iostream> using namespace std; char acBoard[3][3] = { '1', '2', '3', '4', '5', '6', '7'

所以我一直在建立一个Tic-Tac-Toe项目,目前仍在进行中。到目前为止,我还没有发现任何构建错误,但目前我遇到的主要问题是,当播放器1输入第一个数字时,程序刚好关闭。我想这是因为Input()函数,但是在浏览了大约3次代码之后,我发现了一个空白,不知道是什么导致了它。以下是相关代码:

#include <iostream>
using namespace std;


char acBoard[3][3] = { '1', '2', '3', '4', '5', '6', '7', '8', '9' };
char cPlayerCharacter = '0';
int iChoice = iChoice + 1;




void DisplayBoard()
{
    system("cls");
    cout << ' ' << acBoard[0][0] << " | " << acBoard[0][1] << " | " << acBoard[0][2] << endl;
    cout << "---|---|---" << endl;
    cout << ' ' << acBoard[1][0] << " | " << acBoard[1][1] << " | " << acBoard[1][2] << endl;
    cout << "---|---|---" << endl;;
    cout << ' ' << acBoard[2][0] << " | " << acBoard[2][1] << " | " << acBoard[2][2] << endl;
}

char win()
{
    if (acBoard[0][0] && acBoard[0][1] && acBoard[0][2] == 'X' ||
        acBoard[1][0] && acBoard[1][1] && acBoard[1][2] == 'X' ||
        acBoard[2][0] && acBoard[2][1] && acBoard[2][2] == 'X' ||
        acBoard[0][0] && acBoard[1][0] && acBoard[2][0] == 'X' ||
        acBoard[0][1] && acBoard[1][1] && acBoard[2][1] == 'X' ||
        acBoard[0][2] && acBoard[1][2] && acBoard[2][2] == 'X' ||
        acBoard[0][0] && acBoard[1][1] && acBoard[2][2] == 'X' ||
        acBoard[2][0] && acBoard[1][1] && acBoard[2][0] == 'X')
        return 'X';

    if (acBoard[0][0] && acBoard[0][1] && acBoard[0][2] == '0' ||
        acBoard[1][0] && acBoard[1][1] && acBoard[1][2] == '0' ||
        acBoard[2][0] && acBoard[2][1] && acBoard[2][2] == '0' ||
        acBoard[0][0] && acBoard[1][0] && acBoard[2][0] == '0' ||
        acBoard[0][1] && acBoard[1][1] && acBoard[2][1] == '0' ||
        acBoard[0][2] && acBoard[1][2] && acBoard[2][2] == '0' ||
        acBoard[0][0] && acBoard[1][1] && acBoard[2][2] == '0' ||
        acBoard[2][0] && acBoard[1][1] && acBoard[2][0] == '0')
        return '0';

    return 'd';
}


void Input()
{
    cin >> iChoice;
    switch (iChoice)
    {
    case 1:
        acBoard[0][0] = cPlayerCharacter;
        break;
    case 2:
        acBoard[0][1] = cPlayerCharacter;
        break;
    case 3:
        acBoard[0][2] = cPlayerCharacter;
        break;
    case 4:
        acBoard[1][0] = cPlayerCharacter;
        break;
    case 5:
        acBoard[1][1] = cPlayerCharacter;
        break;
    case 6:
        acBoard[1][2] = cPlayerCharacter;
        break;
    case 7:
        acBoard[2][0] = cPlayerCharacter;
        break;
    case 8:
        acBoard[2][1] = cPlayerCharacter;
        break;
    case 9:
        acBoard[2][2] = cPlayerCharacter;
        break;
    }
}


int main()
{
    do
    {
        DisplayBoard();
        cout << "Enter a Number Player " << cPlayerCharacter << ": ";
        Input();
        if (cPlayerCharacter = '0')
        {
            cPlayerCharacter = 'X';
        }
        else cPlayerCharacter = '0';
    } while (!win);

    if (win() == 'd')
    {
        cout << "It's a draw";
    }

    if (win() == '0')
    {
        cout << "Nought wins";
    }

    if (win() == 'X')
    {
        cout << "Cross wins";
    }
}
#包括
使用名称空间std;
char acBoard[3][3]={'1','2','3','4','5','6','7','8','9'};
char cPlayerCharacter='0';
int iChoice=iChoice+1;
无效显示板()
{
系统(“cls”);

cout
while(!win);
应该是
while(!win());
来实际调用函数。否则,您实际上只是在评估函数是否存在。

如果您使用调试器,只需查看一次。
while(!win)这应该是一个警告。除非你拒绝警告。win是一个函数。我知道设计不好。想象一下,如果你决定将游戏改为在5x5棋盘上玩,你将不得不做什么。@sasha199568所以我看到5x5棋盘实际上是…:)当你的代码开始看起来像是你一直在剪切和粘贴同一代码的副本时,是时候退一步重新考虑设计了。