-1

マインクラフトのようにブロックを配置するゲームを作ろうとしています。しかし、配置されたブロックの x 座標と y 座標を格納する多次元配列を作成しようとすると、問題が発生します。このコードは次のとおりです。

public Block[][] blocks = new Block[maxBlockX][maxBlockY];

nullポインター例外が発生しています。以下は例外です。

Exception in thread "main" java.lang.NullPointerException
    at net.lojana.src.World.loadWorldAsReg(World.java:16)
    at net.lojana.client.SpriteCraft.display(SpriteCraft.java:45)
    at Run.main(Run.java:5)

loadWorldAsReg()私のWorldクラスで次のメソッドを引用しています。方法はこちら。

public void loadWorldAsReg() {
    for (int x = 0; x < maxBlockX; x += 20) {
        for (int y = 0; y < maxBlockY; y += 20) {
            blocks[x][y].draw();
        }
        }
}

以下の方法も引用しています。

public void draw() {
    getTexture().bind();
    shapes.drawSquare(new Point(x, y), new Point(x + 20, y + 20));
}

この独特のエラーを解決する方法を知っている人はいますか? とても有難い!

4

3 に答える 3

3

あなたの配列はnulls でいっぱいです。

Block最初に、配列内の各要素のインスタンスを作成する必要があります。

于 2012-12-24T14:45:00.373 に答える
0

これに変更します。

public void loadWorldAsReg() {
    for (int x = 0; x < maxBlockX; x += 20) {
        for (int y = 0; y < maxBlockY; y += 20) {
        blocks[x][y] = new Block();
        blocks[x][y].draw();
    }
    }
}

オブジェクトを使用する前にコンストラクターを呼び出します。Block()コードにコンストラクターがあると仮定して、デフォルトのコンストラクターを使用しました。コンストラクターで必要な場合は、パラメーターを含めます。:)

于 2012-12-24T14:47:16.293 に答える