C++ C++;Tic Tac Toe项目

C++ C++;Tic Tac Toe项目,c++,C++,我现在正在做一个井字游戏项目。我遇到的问题是,每当我在控制台中输入一个坐标,例如[6][0](程序会将标记“X”或“O”放在该位置)用于一个大小为[15][15]的数组时,它会自动将标记“X”或“O”保存到不在数组范围内的另一个位置(在我的例子中是[5][15])。这是我的程序(P/S:我是越南人,所以忽略越南语中的部分): int size=15; 输入量; int inputX=0; int输入=0; 炭板[15][15]; bool-checkWin=false; 字符标记='X'; //

我现在正在做一个井字游戏项目。我遇到的问题是,每当我在控制台中输入一个坐标,例如[6][0](程序会将标记“X”或“O”放在该位置)用于一个大小为[15][15]的数组时,它会自动将标记“X”或“O”保存到不在数组范围内的另一个位置(在我的例子中是[5][15])。这是我的程序(P/S:我是越南人,所以忽略越南语中的部分):

int size=15;
输入量;
int inputX=0;
int输入=0;
炭板[15][15];
bool-checkWin=false;
字符标记='X';
//尺度损失的跨学科研究
bool checkWinLose(){
int max;
int x,y;
x=输入x;
y=输入;
//在调查中横向观察
对于(;max<3;max++)
{
如果((板[x][y]='x'| |板[x][y]='O')&(板[x][y]==板[x-1][y]&&板[x-1][y]==板[x-2][y]))
{

cout我将在粘贴的代码的第123行将
x,y=0
更改为
x=y=0
。并且还将
返回0
添加到函数
checkWinLose()

中,您没有初始化
x
y
的值

尝试使用:

void prepareGameboard () {
    int x,y;

    for (y = 0; y < size ; y++)
    {
        for (x = 0; x < size ; x++)
        {
            board[x][y] = '.' ;
        }
    }
}

我用Google Translate将评论翻译成英语。如果不知道程序的功能,很难理解它。你可以自己将其翻译成英语,但这使程序更容易阅读。这是巨大的努力@johnTks man,但这并不是我问题的真正解决方案。你能解决问题吗???进行更改我说并添加了“return 0;”使您的程序在我的计算机中工作实际上我认为您误解了我的程序的问题。问题是当我输入像board[7][1]这样的坐标时(减号后是board[6][0]),它会将标记的值保护到board[5][15](减号后)(不在数组范围内),当我输入另外两个坐标时,程序结束:board[6][14]和board[7][13](减号后).你能帮我解决吗???这个错误在我身上没有发生。更改后,它在boardYeah中也标记了正确的位置。我的意思是它会自动将值保存到另一个位置,现在显示,因为它不在定义范围内
void prepareGameboard () {
    int x,y;

    for (y = 0; y < size ; y++)
    {
        for (x = 0; x < size ; x++)
        {
            board[x][y] = '.' ;
        }
    }
}
void loadGameboard () {
    int x,y;

    ////TODO: check win or lose
    while (!checkWin) {
        for (y = 0; y < size ; y++)
        {
            for (x = 0; x < size ; x++)
            {
                cout << board[x][y] << "  ";
            }
            cout << endl;
        }
        checkWin = checkWinLose();
        if (checkWin == true)
            return;
        takeInput();
        inputAmount++;
    }
}
// Interdisciplinary examination of scale loss
bool checkWinLose() {
    int max;
    int x,y;
    x = inputX;
    y = inputY;

    // Looking horizontally under investigation
    for (; max < 3; max++)
    {
        if ((board[x][y] == 'X' || board[x][y] == 'O') && (board[x][y] == board[x - 1][y] && board[x - 1][y] == board[x - 2][y]))
        {
            cout << "Game over ngang!" << endl;
            return 1;
        }
        x++;
    }

    x = inputX;
    y = inputY;
    max = 0;
    // Interdisciplinary examination of vertical
    for (; max < 3; max++)
    {
        if ((board[x][y] == 'X' || board[x][y] == 'O') && (board[x][y] == board[x][y - 1] && board[x][y - 1] == board[x][y - 2]))
        {
            cout << "Game over doc!" << endl;
            return 1;
        }
        y++;
    }

    x = inputX;
    y = inputY;
    max = 0;
    // Interdisciplinary examination of under the cliff cave from left to right
    for (; max < 3; max++)
    {
        if ((board[x][y] == 'X' || board[x][y] == 'O') && (board[x][y] == board[x - 1][y - 1] && board[x - 1][y - 1] == board[x - 2][y - 2]))
        {
            cout << "Game over trai sang phai!" << endl;
            return 1;
        }
        x++;
        y++;
    }

    x = inputX;
    y = inputY;
    max = 0;
    // Interdisciplinary examination of under the cliff cave from right to left
    for (; max < 3; max++)
    {
        if ((board[x][y] == 'X' || board[x][y] == 'O') && (board[x][y] == board[x + 1][y - 1] && board[x + 1][y - 1] == board[x + 2][y - 2]))
        {
            cout << "Game over phai sang trai!" << endl;
            return 1;
        }
        x--;
        y++;
    }

    // Flower test case
    if (inputAmount == 225)
    {
        cout << "Game over hoa!" << endl;
        return 1;
    }

    return 0; //<- Returning false if the all other tests failed
}