Как вы используете тип объекта в качестве параметра для метода / конструктора? - PullRequest
0 голосов
/ 18 февраля 2020

Я сейчас работаю над игрой Java TD. У меня есть класс под названием «Волна», который содержит типы врагов для появления (которые все расширяют класс «Враг») и задержку между появлением.

public class Wave {

*I dunno what*[] enemyTypes;
int[] delays;
private Point spawnPoint;

Wave(*I dunno what*[] enemyTypes, int[] delays, Point spawnPoint) {

    this.enemyTypes = enemyTypes;
    this.delays = delays;
    this.spawnPoint = spawnPoint;

}

void spawnWave() {

    for (int i = 0; i < enemyTypes.length; i++) {

        try {

            Thread.sleep(delays[i]);

        } catch (InterruptedException e) {
          e.printStackTrace();
        }

        Point sP = new Point(spawnPoint);

        *The enemy type to spawn* enemy = new *The enemy type to spawn*.spawn(sP);

    }

}

}

Я надеваю не знаю, как кодировать биты в **

Ответы [ 2 ]

0 голосов
/ 18 февраля 2020

Как насчет этого?

Более подробную информацию можно получить по адресу Oracle Java Документация

public class Wave<T extends Enemy> {

  List<T> enemyTypes;
  int[] delays;
  private Point spawnPoint;

  Wave(int[] delays, Point spawnPoint) {

    this.enemyTypes = new ArrayList<>();
    this.delays = delays;
    this.spawnPoint = spawnPoint;

  }

  boolean addEnemy(T enemy) {
    if(enemyTypes.contains(enemy)) {
      return false;
    }
    this.enemyTypes.add(enemy);
    return true;
  }

  void spawnWave() {

    for (int i = 0; i < enemyTypes.size(); i++) {

        try {

            Thread.sleep(delays[i]);

        } catch (Exception e) {}

        Point sP = new Point(spawnPoint);

        Enemy enemy = enemyTypes.get(i);
        enemy.spawn(sP);

    }
  }
}
0 голосов
/ 18 февраля 2020

выглядит как сценарий использования фабричного шаблона
Вы можете предоставить массив фабрик для классов противника

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...