0

Eclipse で Java を使用して Tictactoe ゲームを書いている新しいプログラマーです。

勝利条件に問題があると思います。エラーが表示されます: Exception in thread "main" java.lang.NullPointerException at Game.NoughtsCrosses.(NoughtsCrosses.java:106) at Game.Main.main(Main.java:5)

これが私の勝利条件のビットです。よくできていませんが、コンパイル時に問題が発生しています。誰でも理由を見つけることができますか? タイ!!

私は 3x3 グリッド、0 -> 8 に正方形を設定しています。各ボタンには、各プレイヤーがクリックすると X または O に設定される独自のテキストがあります。

勝利条件コード:

if (square[0].getText().equals(square[1].getText()) && square[1].getText().equals(square[2].getText()) != square[0].getText().isEmpty()) {
    win = true;
}

コードの完全な Pastebin

ありがとうございます:) ご不明な点がございましたら、詳しく説明できます:D

4

6 に答える 6

3

正方形のテキストの 1 つが null のようです。覚えておくべき重要なことの 1 つは、空の文字列は null と同じではないということです。Java では、特に値を String に割り当てていない場合、値は null になります。""これを修正するには、ゲーム ボードをセットアップするときに、各四角形のテキストを (空の文字列) に明示的に設定する必要があります。

于 2013-07-11T20:30:49.943 に答える
0

このタイプのソリューションを実装する場合は、自分で作業を簡素化してください。上記のコードの小さなスニペットに基づくと、やらなければならない仕事を本当に複雑にしすぎているように見えます。

char cell0 = //get that char, be it X or O
char cell1 = //
...
char cell8 = //

これで、セルを 1 つずつ比較して勝利を決定できます。ボードゲームは次のように設定されています。

0 1 2
3 4 5
6 7 8

したがって、順番に進むことができます:

Horizontal Solutions:
(cell0 == cell1 && cell0 == cell2)
(cell3 == cell4 && cell3 == cell5)
(cell6 == cell7 && cell6 == cell8)

Vertical Solutions
(cell0 == cell3 && cell0 == cell6)
//And so on

Cross Solutions:
(cell0 == cell4 && cell0 == cell8)
(cell2 == cell4 && cell2 == cell6)

これにより、勝利条件がチェックされます。

于 2013-07-11T20:30:19.817 に答える