我正在尝试创建一个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(第一行的最后一个元素)时,它会在那里创建一个符号,并在下一行的第一个元素上创建一个符号。
为什么会这样做的任何帮助或解释?
答案 0 :(得分:0)
使用modulo
(%
)查找列,如果您希望3
位于主板的右上角,请确保从位置减1。
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";
}