0

我正在尝试创建一个 C++ Tic-Tac-Toe 游戏,但是当我修改字符数组(棋盘本身)时,它会在放置它的行上创建两个字符,然后在下一行的第一个元素上创建两个字符。下面的代码是收集用户输入并将其放入板上的代码。

void changeBoard(int position)
{
int row = position / 3;
int column = position - (row*3);
if((player == 1 & run == 1) || (player == 0 && run == 0))
    Board[row][column] = 'X';
else
    Board[row][column] = 'O';
}

void displayBoard()
{
int i;
int z;
    for(i=0;i<3;i++)
    {
    cout << "\n\n";
    for(z=0;z<3;z++)
    {
        cout << "||" << "  " << Board[i][z] << "  ";
        if(z == 2)
            cout << "||";
    }
}
cout << "\n";
}

我省略了其余的代码。然而,当用户输入位置 3(第一行的最后一个元素)时,输出会在那里创建一个符号,并在下一行的第一个元素上创建一个符号。

关于它为什么这样做的任何帮助或解释?

4

1 回答 1

0

使用modulo( ) 查找列,如果您想成为棋盘的右上角,%请确保从位置减去 1 。3

Javascript 示例:http: //jsfiddle.net/howderek/nPMvz/

void changeBoard(int position)
{
position--;
int row = position / 3;
int column = position % 3;
if((player == 1 & run == 1) || (player == 0 && run == 0))
    Board[row][column] = 'X';
else
    Board[row][column] = 'O';
}

void displayBoard()
{
int i;
int z;
    for(i=0;i<3;i++)
    {
    cout << "\n\n";
    for(z=0;z<3;z++)
    {
        cout << "||" << "  " << Board[i][z] << "  ";
        if(z == 2)
            cout << "||";
    }
}
cout << "\n";
}
于 2013-03-11T16:09:26.567 回答