0

こんにちは、これを読んでくれてありがとう。Java/LWJGL でコーディングしています。私の問題は、これを1つ含めないと、一部のコードでヌルポインターエラーが発生し続けることです。クラスは基本的に4クラス

  • ブロッククラスです。
  • blockGrid クラス
  • ブロック型クラス
  • そしてブートクラス。

ブート クラスはディスプレイを作成し、ゲーム ループで blockgrid クラス内の draw メソッドを実行します。ブロックの移動先を設定するには、blockgrid メソッド内で renderat(x,y) メソッドを使用します。ブロック クラスは、特定の x、y でクワッドを作成するだけです。

うまく説明できていなかったらすみません。ここに私のコードがあります:これはエラーが発生する場所です。私のコメントを読んで、エラーの場所を確認してください。

// BlockGrid.java
package minecraft2d;

import java.io.File;

public class BlockGrid {
    private Block[][] blocks = new Block[100][100];

    public BlockGrid() {
        for (int x = 0; x < 25 - 1; x++) {
            for (int y = 0; y < 16 - 1; y++) {
                blocks[x][y] = new Block(BlockType.AIR, -100, -100); //This is where my error happens! If I don't include this line i get a null pointer. Anything will help. I am really stuck and don't know whats happening
            }
        }
    }
    public void setAt(int x, int y, BlockType b) {
        blocks[x][y] = new Block(b, x * 32, y * 32);
    }

    public void draw() {
        for (int x = 0; x < 25 - 1; x++) {
            for (int y = 0; y < 16 - 1; y++) {
                blocks[x][y].draw();
            }
        }
    }
}
4

1 に答える 1

2

The reason you get a NullPointerException when you don't have that line is that blocks[x][y] will be null for all x,y when draw() is called. draw() assumes you have valid Block objects because it's calling Block#draw.

于 2012-04-20T21:25:56.550 に答える