2

現在、C++ クラスでマルチプレイヤー Tic-tac-toe ゲームを作成するための宿題に取り組んでいますが、プログラムの入力部分に問題があります (他のほとんどすべてを実行しています)。

とにかく、私の目標は、現在のプレーヤーに、row,col 形式の行と列を要求することです。次に、ゲーム ボードを表す 2 次元配列にマークを配置する必要があります。

cin を使用して入力を char 配列に読み込むだけで、その配列の 0 の位置と 2 の位置を取得でき、入力から 2 つの数値を取得できると考えました。ただし、これを行うと、数値ではなく、入力の ASCII 値になります (たとえば、「1」ではなく 49 が得られます)。

私はおそらく本当に単純なものを見落としているように感じるので、どんな情報も非常に役に立ち、感謝しています. これが私が持っていたものです:

void getEntry(char XorO, char gameBoard[GRID_SIZE][GRID_SIZE])
{
    char entry[3];

    cout << XorO << " - enter row,col: ";
    cin >> entry;

    int row = entry[0];
    int col = entry[2];

    //Then I would use the row, col to pass the XorO value into the gameBoard
}
4

4 に答える 4

2

番号を取得するには、次のようにします

row = entry[0] - '0';
col = entry[2] - '0';

これにより、ASCII から実際の数字に変換されます。

于 2013-01-22T19:05:24.417 に答える
1

char配列に読み込んでいることに注意してください。個々charのを に変換すると、整数値、、またはではなく、文字、 、またはintの ASCII (または Unicode) 値が取得されます。1 桁を変換するには、ASCII コードの便利なプロパティを使用できます。数字の文字は連続しています。これは、対応する整数値を取得するために、任意の桁からのコードを抽出できることを意味します。例えば'0''1''2'012'0'

row = entry[0] - '0';
于 2013-01-22T19:08:20.087 に答える
1

operator>>数値の解釈に対処しましょう。

void getEntry(char XorO, char gameBoard[GRID_SIZE][GRID_SIZE])
{
    int row, col;
    char comma;

    cout << XorO << " - enter row,col: ";
    std::cin >> row >> comma >> col; 

    if( (!std::cin) || (comma != ',') ) {
      std::cout << "Bogus input\n";
      return;
    }

    //Then I would use the row, col to pass the XorO value into the gameBoard
}
于 2013-01-22T19:10:55.310 に答える
0
void getEntry(char XorO, char gameBoard[GRID_SIZE][GRID_SIZE])
{
    char entry[3];

    cout << XorO << " - enter row,col: ";
    cin >> entry;

    int row = entry[0] - '0';
    int col = entry[2] - '0';

    //if grid_size <= 9
}
于 2013-01-22T19:10:15.880 に答える