问题描述
这是在迷宫游戏的棋盘上创建图块的功能。我有一些限制,例如整个板的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 (将#修改为@)