使用C ++中的循环创建字符数组

时间:2013-03-11 15:26:16

标签: c++ loops

我正在尝试创建一个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(第一行的最后一个元素)时,它会在那里创建一个符号,并在下一行的第一个元素上创建一个符号。

为什么会这样做的任何帮助或解释?

1 个答案:

答案 0 :(得分:0)

使用modulo%)查找列,如果您希望3位于主板的右上角,请确保从位置减1。

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";
}