java如何制作一个方法来移动数组中的字符?
交易是这样的,我必须做一个类似于吃豆人的游戏,有地图、点数、幽灵等等。 整个过程就像一个数组[8][8],它从一个数组中读取墙壁的位置和鬼魂的初始位置。txt文件,PacMan从固定位置开始,水果是随机的。游戏开始时的任何空白都会被一个简单的点球填满。 我已经完成了地图,它显示了它和一切,但我似乎无法想出一种方法,让玩家可以用键盘控制PacMan。。。这就是我到目前为止尝试过的。。。 在球员课上
BufferedReader read = new BufferedReader(new InputStreamReader(System.in));
String mov = read.readLine();
if (mov.equals("w"))
{
PacMan.MoveU();
}
然后对其他移动关键点重复该操作
PacMan类中的单个移动方法如下所示
public static void MoverR()
{
for (int i=0;i<Tablero.length;i++)
{
for (int j=0;j<Tablero.length;j++)
{
if (Tablero[i][j] instanceof PacMan)
Tablero[i][j]=null;
Tablero[i][j+1]=new PacMan();
}
}
}
}
这显然不起作用,所以我想知道是否有人能帮我找到一种更有效的方法来做到这一点?我真的不介意从零开始这两门课。。。 谢谢
# 1 楼答案
ArrayOutOfBounds异常是由
Tablero[i][j+1]=new PacMan();
whenj == 7
引起的,因为您试图访问无效的位置(Tablero[i][8]
)你不需要检查整个数组来找出Pacman的位置,你可以将位置存储为Pacman的一个私有变量,但在这种情况下,你不应该每次需要移动Pacman时都创建一个新的实例,就像你当前的实现一样
# 2 楼答案
得到
ArrayOutOfBoundsException
的一个原因是,在循环中,您将PacMan
移动到[i][j +1]
位置,其中j + 1
可能大于数组长度你需要在“移动”时检查
j + 1 < Tablero.length
您也可以简单地移动
PacMan
的同一个实例,而不是创建一个新实例: