0

グリッドワールドのケーススタディでは、私の最後のプロジェクトでゲームを作成しています。ゲームでは、プレーヤーが「W」キーをクリックすると、shiftUp()メソッドが呼び出され、特定のインスタンスの他のすべてのアクターが下に移動して、プレーヤーが動いているような錯覚を引き起こします。これはメソッドの完成した実装ではありませんが、グリッド内のすべてのアクターを取得し、それらがActorを拡張するEnemyと呼ばれるクラスのインスタンスであるかどうかをテストする必要があります。その場合、俳優は1スペース上に移動する必要があります。このメソッドを呼び出すと、enemy.moveTo(...);を呼び出す行でNullPointerExceptionが呼び出されます。nullかどうかを確認するので、これは発生しないはずです。誰かがこれを手伝ってくれますか?私はこれを取得します:スレッド「AWT-EventQueue-0」の例外java.lang.NullPointerException

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()));
                }
        }
    }
}
4

1 に答える 1

1

enemy != null事前にチェックしているので、とを呼び出すと、enemy.getLocation()が戻ってくると思います。nullNullPointerExceptionnull.getRow()null.getCol()

これが事実である場合、問題はあなたがグリッドActorで適切なものを決して与えられないということであるように見えます。をグリッドに配置する方法をLocation使用していることを確認してください(ではなく)。それに応じての位置を設定します。putSelfInGrid(Grid<Actor> grid, Location loc)Actor grid.put(Location loc, E obj)putSelfInGrid()Actor

于 2012-05-12T02:08:49.607 に答える