为更新循环插入对象的更好解决方案

时间:2016-12-24 02:09:19

标签: java arrays game-engine

所以我是游戏开发的新手,还不知道任何模式。试着自己解决这个问题,这是我遇到的一个问题。

我有一个名为BowLevel的关卡。它有更新方法,更新敌人列表,处理碰撞等。

然而,我实现向这些列表添加对象的方式感觉不对。它真的没有意义。

这是我的抽象func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { guard let text = (textField.text as NSString?)?.replacingCharacters(in: range, with: string) else { return true } return text.trimmingCharacters(in: CharacterSet.alphanumerics).isEmpty || !text.characters.filter { $0 == "@" || $0 == "." }.isEmpty }

的构造函数
Enemy

有了这个,我就无法将敌人添加到除此之外的任何其他级别。 但是将我的关卡对象传递给所有类的每个构造函数似乎都是错误的。

有没有更好的方法来解决这个问题?

1 个答案:

答案 0 :(得分:0)

如果我理解你的代码,你有很多级别,每个级别都是一个级别,并且你将每个级别的敌人存储为静态ArrayList,因此你不知道如何添加到不同的水平。

正确的OO方法是定义一个类Level,它定义所有级别共有的方法(而不是静态)。例如,您可以:

class Level {
  private ArrayList<Enemy> enemies = new ArrayList<>();

  public void addEnemy(Enemy en) {
  }
  ...
}

现在您的BowLevel课程可能如下所示:

class BowLevel extends Level {
  public BowLevel() {
    // do something here which is level specific... 
    //perhaps create the enemies?
    addEnemy(new Enemy(....));
  }
}