0

抱歉,如果我在凌晨 12 点 34 分解释得不好,而且我正在深夜编程,但我需要帮助。顺便说一句,这是在 LWJGL 这是我的代码:

我不断收到 addAt() 和 draw() 的空指针错误;基本上有几个类可以做到,所以当我点击它时,它会运行 addAt(mousex,mousey); 并且在渲染循环中它将继续绘制。new Block(x,y) 类是绘制 QUAD 的类。

//beggining
public class Grid {

    Block[][] blocks = new Block[25][25];
    public Grid(){
        for (int x = 0; x < 25 - 1; x++) {
            for (int y = 0; y < 16 - 1; y++) {
                blocks[x][y] = new Block(x,y);
            }
        }
    }
    public void draw(){

        for (int x = 0; x < 25;x++){
            for (int y = 0; y < 25;y++){
                blocks[x][y].draw();
            }   
        }

    }
    public void addAt(int x,int y){

        blocks[x][y] = new Block(x,y);

    }
}
//end 

基本上 Main 只是制作一个 Display 并运行绘图循环和输入侦听器。

然后 Block 类只是在定义的 x 和 y 处创建一个四边形。

抱歉,如果我违反了堆栈溢出规则。这是我的第一篇文章,来晚了。:) 提前致谢!

4

2 回答 2

2

在添加到块数组时,您的循环是从 0 到 (25-1) 和 (16-1)。在处理块时,循环是从 0 到 25。这很可能会导致 NPE。尝试将块从 0 初始化到 25(对于 x 和 y 值)。

于 2012-04-20T04:55:15.280 回答
0

我试过你的代码,它工作正常(我没有得到任何异常)。这是我的代码:

public class Test {

    private class Block {
        int x, y;

        private Block(int x, int y) {
            this.x = x;
            this.y = y;
        }


        void draw() {

        }
    }


    Block[][] blocks = new Block[25][25];

    public Test(){
        for (int x = 0; x < 25 - 1; x++) {
            for (int y = 0; y < 16 - 1; y++) {
                blocks[x][y] = new Block(x,y);
            }
        }
    }
    public void draw(){

        for (int x = 0; x < 25;x++){
            for (int y = 0; y < 25;y++){
                blocks[x][y].draw();
            }
        }

    }
    public void addAt(int x,int y){
        blocks[x][y] = new Block(x,y);
    }



    public static void main(String[] args) {
        Test t = new Test();
        t.addAt(4,5);
    }
}

=> 问题似乎是深夜编程;-)

于 2012-04-20T05:00:42.813 回答