0

您好,感谢您阅读本文。我正在用 java/LWJGL 编码。我的问题是,如果我不包含这件事,我会不断收到一些代码的空指针错误。基本上有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

当你没有那条线时你得到一个 NullPointerException 的原因是null当 draw() 被调用时 blocks[x][y] 将适用于所有 x,y 。draw() 假设您有有效的 Block 对象,因为它正在调用 Block#draw。

于 2012-04-20T21:25:56.550 回答