0

午前 12 時 34 分で、深夜のプログラミングを行っているので、うまく説明できていない場合は申し訳ありませんが、助けが必要です。ところで、これはLWJGLにありますこれが私のコードです:

addAt() と draw(); で null ポインター エラーが発生し続けます。基本的に、クリックすると 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 

基本的に、メインはディスプレイを作成し、描画ループと入力リスナーを実行するだけです。

次に、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 に答える