创建图块功能JAVA时出现问题

问题描述

这是在迷宫游戏的棋盘上创建图块的功能我有一些限制,例如整个板的NxN矩阵。我已经做了表示功能一个游戏,但是问题似乎出在这里。免费询问我以获得更多描述。 代码

public void createTile() {
        for(int i=0; i<(N*N); i++) {
            tiles[i] = new Tile();
        }
        int c = 0;
        while(c < N * N ){
            for(int j=0; j<N; j++) {
                for(int i=0; i<N; i++) {
                    tiles[c].setX(i);
                    tiles[c].setY(j);
                }
                c++;
            }
        }
        for(int i=0; i<N*N; i++) {
            tiles[i].setId(i);
        }
        
        for(int a=0; a<(N*N)-1; a++) {
            if(tiles[a].getX() == 0)
                tiles[a].setLeft(true);
            if(tiles[a].getX() == N-1)
                tiles[a].setRight(true);
            if(tiles[a].getY() == 0)
                tiles[a].setDown(true);
            if(tiles[a].getY() == N-1)
                tiles[a].setUp(true);
        }
        this.W = this.W - 4*N;
        while(this.W>0 ) {
            int r = (int)(Math.random() * 4);
            int k = (int)(Math.random() * (N*N));
            int t = 2;
            if(tiles[k].isLeft() == true)   t++;
            if(tiles[k].isRight() == true)  t++;
            if(tiles[k].isUp() == true) t++;
            if(tiles[k].isDown() == true)   t++;
            if(t == 2)  continue;
            if(r==0) {
                for(int i=0; i<N*N; i++) {
                    if((tiles[k].getY()+1 == tiles[i].getY()) && (tiles[k].getX() == tiles[i].getX()) && (tiles[i].isDown() == false)) {
                        tiles[k].setUp(true);
                        tiles[i].setDown(true);
                        this.W--;
                    }
                }
            }
            else if(r==1)   {
                for(int i=0; i<N*N; i++) {
                        if((tiles[k].getY() == tiles[i].getY() + 1) && (tiles[k].getX() == tiles[i].getX()) && (tiles[i].isUp() == false)) {    
                            tiles[k].setDown(true);
                            tiles[i].setUp(true);
                            this.W--;
                        }
                    }
            }
            else if(r==2)   {
                for(int i=0; i<N*N; i++) {
                        if((tiles[k].getY() == tiles[i].getY()) && (tiles[k].getX() == tiles[i].getX()+1) && (tiles[i].isRight() == false)) {   
                            tiles[k].setLeft(true);
                            tiles[i].setRight(true);
                            this.W--;
                        }
                    }
            }
            else if(r==3)   {
                for(int i=0; i<N*N; i++) {
                    if((tiles[k].getY() == tiles[i].getY()) && (tiles[k].getX() + 1 == tiles[i].getX()) && (tiles[i].isLeft() == false)) {  
                        tiles[k].setRight(true);
                        tiles[i].setLeft(true);
                        this.W--;
                    }
                }
            }
        }
    }

这是输出错误。可能它已经尝试了一次上升,当它可以正常上升时便崩溃了。

玩家无法向上移动 线程“主”中的异常java.lang.Arrayindexoutofboundsexception:索引0超出长度0的范围 在ergasia / ergasia.Player.move(Player.java:87) 在ergasia / ergasia.Game.main(Game.java:31)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)