我正在使用Java2D开发一个小型RPG Tile游戏。我的Tile创建是使用2D数组字符串完成的,在绘制时转换为相应的图像。我有一个精灵的2D数组,它的大小与我的tile数组相同,它会存储哪些精灵位于哪个位置。
当我的怪物类包含怪物(X,Y)的位置时,问题就出现了。但是,Sprites的2D arraylist必须与那些Monsters的位置相对应。
public class Monster {
private int posX;
private int posY;
public Monster (posX, posY){
this.posX = posX;
this.posY = posY;
}
// setters and getters
private void Move(){
this.setPosX (this.getPosX() + 1);
// would move the monster into posX + 1
}
然后我在MonsterSpriteData类中:
public class MonsterSpriteData{
private Monster [][] msd;
public MonsterSpriteData(){
this.loadMonsterData();
}
public void loadMonsterData(){
this.msd = new Monster [size of tile screen X] [size of tile Screen Y]
//load from text file monster data and set
msd [loadedMonsterPosY][loadedMonsterPosX] = new Monster (loadedMonsterPosX, loadedMonsterPosY);
}
然后当然,在主JPanel中我调用了update()方法来移动Monster的位置。如何对应怪物的移动并将新位置存储到msd?
我试图存储在Monster类中:
private void updateMSD(MonsterSpriteData msd, int oldX, int oldY, int newX, int newY){
msd.getMSD()[newY][newX] = this;
msd.getMSD()[oldY][oldX] = null;
}
然后在Monster类中调用move()时调用它。但是这种方法并没有对它进行更新以使其匹配。有什么方法可以更简单地存储怪物的位置吗?
-----------编辑: 这甚至是处理怪物位置的好方法吗?我应该摆脱Monster类中的X和Y,只处理2D数组的位置吗?