2012-05-12 4 views
0

グリッドワールドのケーススタディで私の最終的なプロジェクトで私はゲームを作っています。ゲームでは、プレーヤーが "W"キーをクリックするとshiftUp()メソッドが呼び出され、あるインスタンスの他のすべてのアクターを下に移動させて、プレーヤーの移動の錯覚を作成します。これはメソッドの完成した実装ではありませんが、これはグリッド内のすべてのアクターを取得し、Actorを拡張するEnemyというクラスのインスタンスであるかどうかをテストする必要があります。もしそうなら、俳優は一つのスペースを上げるべきです。このメソッドを呼び出すと、enemy.moveTo(...)を呼び出す行でNullPointerExceptionが呼び出されます。これは、nullかどうかをチェックするために発生しません。誰もこれで私を助けることができますか?スレッドで 例外「AWT-EventQueueの-0」のjava.lang.NullPointerExceptionGridWorldの移動アルゴリズム

public void shiftUp() 
{ 
    if (((GameGrid)getGrid()).getMinX() != 0) 
    { 
     Grid<Actor> grid = getGrid(); 
     if (grid != null) 
     { 
      for (int y = 0; y < getGrid().getNumRows(); y++) 
       for (int x = 0; x < getGrid().getNumCols(); x++) 
       { 
        Actor enemy = grid.get(new Location(y,x)); 
        if (enemy != null && enemy instanceof Enemy) 
         enemy.moveTo(new Location(enemy.getLocation().getRow() - 1, enemy.getLocation().getCol())); 
       } 
     } 
    } 
} 
+2

例外の完全なスタックトレースとは何ですか? 'getLocation()'が 'null'を返す可能性はありますか? – Jeffrey

+0

これはそれです:スレッド "AWT-EventQueue-0"の例外 – Mobianhero

+0

@Mobianhero、あなたの質問に完全なスタックトレースを編集して追加します。 – Jeremy

答えて

1

あなたが事前にenemy != nullをチェックされているので、私はenemy.getLocation()NullPointerExceptionを引き起こしているnullを、返却されていることを推測している:私はこれを取得しますnull.getRow()null.getCol()に電話をしたとき。

この場合、問題は、Actorにグリッド内の適切なLocationが決して与えられていないように見えます。 メソッドを使用してActorをグリッド(ではなく、 )に配置していることを確認してください。putSelfInGrid()は、それに応じてActorの位置を設定します。

+0

ありがとう!それは私の問題を完全に解決しました。 – Mobianhero

+0

「GridWorld」をやっていない3年後にもまだそれを手に入れました。 :P –

関連する問題