在c++中使用循环创建字符数组

Creating a character array using a loop in C++

本文关键字:创建 字符 数组 循环 c++      更新时间:2023-10-16

我试图创建一个c++井字游戏,但是当我修改字符数组(棋盘本身)时,它会在该行上创建两个字符,然后在下一行的第一个元素上创建两个字符。下面的代码将收集用户输入并将其放置到电路板中。

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 << "nn";
    for(z=0;z<3;z++)
    {
        cout << "||" << "  " << Board[i][z] << "  ";
        if(z == 2)
            cout << "||";
    }
}
cout << "n";
}

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

有什么帮助或解释它为什么这样做吗?

使用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 << "nn";
    for(z=0;z<3;z++)
    {
        cout << "||" << "  " << Board[i][z] << "  ";
        if(z == 2)
            cout << "||";
    }
}
cout << "n";
}