Java Tile游戏开发:精灵位置处理

时间:2015-11-04 00:02:26

标签: java arrays swing

我正在使用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数组的位置吗?

0 个答案:

没有答案