0

C++ Tic-Tac-Toe ゲームを作成しようとしていますが、文字配列 (ボード自体) を変更すると、配置された行に 2 つの文字が作成され、次の行の最初の要素に作成されます。以下のコードは、ユーザー入力を収集してボードに配置するものです。

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 に答える