Как лучше реализовать снаряд в клоне Space Invaders?
Доброго времени суток!
Пишу клон Space Invaders (изучаю Java) для себя. Не могу никак придумать, как лучше реализовать снаряды на экране, чтобы сборщик мусора их корректно обрабатывал.
Из того, что я придумал, это сделать три массива класса Bullets и когда один из них заполняется( количество снарядов 15, например), очищаем следующий и начинаем заполнять его и т.д. Но, как по мне, это не очень рационально и громоздко.
Можете, пожалуйста, подсказать, как лучше это реализовать?
Как вариант пул снарядов.
1 массив снарядов одного типа, размер - по максимальному количеству снарядов на экране (оно всегда ограничено). Создавать снаряды сразу для всего массива, по мере необходимости их использовать, отображать полёт снаряда, и после "сработки" (столкновение с преградой либо выход за пределы экрана) помечать как готовые к повторному использованию. Избавляемся от создания лишних объектов во время игры. Убивать их придётся только между уровнями.
Дополню ссылкой gameprogrammingpatterns.com/object-pool.html . Если коротко, то объекты не надо постоянно добавлять и удалять, а надо держать в них логическую переменную об использовании объекта.
Собственно, так и поступил. Создаю массив из 15 снарядов, помещаю его за пределы сцены и устанавливаю всем снарядам ready = true и в основном цикле дергая из массива первый попавшийся снаряд у которого ready == true, попутно меняю значение переменной на false. Когда снаряд соприкасается с чем-либо или уходит за пределы сцены, я помечаю его как ready = true и все.
Спасибо!