2015-01-07 2 views
-4

Я строй игры, где есть корабль, который стреляет ракеты (есть игрока класса для корабля и ракет класса для ракет), но я не знаю точно сколько ракет будет расстреляно в течение всей игры. Это означает, что я не могу просто Missile one = new Missile(...), если так, я должен был бы объявить миллиард ракет. Мой вопрос: Есть ли простой способ в Java создать динамическое число экземпляров объектов, которые не хранятся в переменных для каждого?Java неизвестного количество экземпляров класса

+3

Вам не нужны «безымянные» классы, но вы можете сохранить произвольное количество экземпляров в классах java.util Collections (Set, Map, List и т. Д. ... в зависимости от ваших конкретных потребностей). Один экземпляр класса данных представляет собой все. – BadZen

+4

Знаете ли вы о массивах? Или коллекции ('List' и т. Д.)? (Кроме того, вы знаете разницу между объектами и переменными?) – immibis

+0

@immibis - OP сказал, что он не знает, сколько объектов будет, массивы не помогают. – BadZen

ответ

1

Также стоит отметить, что в то время как я немного о своей игре знаю, что я как-то представить себе отдельные ракеты могут быть весьма короткоживущие объекты, и вы можете просто хотите отказаться от них в течение всей игры.

Настоящий сборщик мусора будет иметь дело со всем вашим отработавшим боеприпасом.

+0

Я знаю, как «удалить» мои объекты из игры. Ваш ответ не отвечает на мой вопрос. – gabzerbinato

+1

@gabzerbinato: Это было предназначено. В самой старой такой игре (Space Invaders) игрок может стрелять как можно больше ракет, но только одна ракета одновременно. Это не просто сделать игру сложнее, но и значительно упрощает код. Если вы не знаете, сколько ракет будет «играть» в определенный момент времени, вам понадобится какая-то коллекция. Я хочу сказать, что есть более простые способы решить, не зная, сколько ракет будет уволено. – Persixty

+1

Вы правы, спасибо, что показали мне еще одну возможность для моей игры. – gabzerbinato

1

Вы просто создаете объекты Missle всякий раз, когда вы стреляете. Это зависит от того, что вам нужно сделать, чтобы отслеживать их. Их может быть достаточно, чтобы добавить их в контейнер GUI, и они могут управлять самим собой. Или, если вы хотите, чтобы все они были доступны, вы добавляете их в список или карту (или массив, если можете ограничить число).

List<Missle> missles = new ArrayList<Missle>(); 
missles.add(new Missle()); 
... 
missles.add(new Missle()); 
System.out.println("You have currently " + missles.length() + " missles."); 
Смежные вопросы