私は一種のチェスゲームをコーディングしていますが、少し問題があります。 私のゲームではボードにいくつかのポーンがあり、ボードは100タイルに分割されています。私は何をしたいのかLibgdx - クリックすると俳優を選択し、2回目のクリックで別の位置に移動します。
は次のとおりです。私はポーンをクリックすると、それを選択だと私は空のタイルをクリックしたときに、選択されたポーンは、このタイルに移動します。
私はPawnをクリックしても問題はありませんが、2番目のクリックで問題が発生します。私はエラーがあります:Null Pointer Exception。私は選択されたPawnをメモリに保持し、2回目をクリックすると新しい座標に移動する方法を知らない。
私は俳優がクリックされた場合に待機するようにタッチダウン()メソッドでジェスチャー検出器を使用します。
これは私のコードです、コントローラです。私は空のタイルをクリックするとIF条件がOKではないとthis.plateau.PieceSelectがNullであるので、私はそれが動作していない知っている
Actor cibletile = tiles[(int) Cx][(int) Cy]; //the clicked tile
int tx = (int) cibletile.getX(); // pos x clicked tile
int ty = (int) cibletile.getY(); // pos y clicked tile
// if there is a Pawn on the tile
if (pieces[tx][ty] != null) {
System.out.println("there is a pawn here !");
Piece piece = pieces[tx][ty];
this.selectPiece(piece); //select the clicked pawn => this.plateau.PieceSelect
} // there are no problems with this if condition all is working
else{
this.movePiece(this.plateau.PieceSelect,tx,ty); //move the selected Pawn to new coordonates when I click a second time
} //the problem is here, I don't know how to move the Pawn after he is selected
:私はちょうどクリック質屋で興味深い部分を置きます。これが私がNull Pointer Exceptionを持っている理由です。
私は本当にポーンを選択して、私は二度目、多分別の方法をクリックしたときに、それを動かすために行う方法がわかりませんか?
私を助けることができればとてもうれしいです。私は今、この問題を1週間かかっています。
回答ありがとうございますが、私は試してもまだ動作していません。問題は、私が全体のメドをクリックするたびに(私が最初の投稿に入れたすべてのコード)再び呼び出されるということです。だから、私がPawnをクリックすると、ピースは選択されますが、空のタイルをもう一度クリックすると、selectPieceはもう存在しません。空のタイルをクリックするとIF条件がOKになります。ヌルポインタ例外が発生します。 – jejelink69