У меня есть куча объектов (воздушных шаров), которые движутся вверх, попадают на крышу (то есть object.yPos <= 0) и останавливаются.Воздушные шары, которые следуют за ними, ударяют о существующие воздушные шары и останавливаются.Теперь я стреляю по воздушным шарам и удаляю те, которые попали ... достаточно легко, если они уже находятся на дне.Тем не менее, <b>Я также должен удалить те воздушные шары, которые остались подвешенными после того, как их опорный Якорь был поражен и удален, то есть они больше не прикреплены к крыше ИЛИ ни к одному из других шаров. В связи с этим у меня есть следующие вспомогательные методы в моем объекте Balloon:
balloon.getAdjacentList () -> Возвращает ArrayList всех воздушных шаров, которые прикреплены к шару
balloon.getX () -> Возвращает X Pos воздушного шара
balloon.getY () -> Возвращает Y Pos воздушного шара
Один из способов обнаружения "зависания в воздухе" воздушного шарая могу подумать о том, чтобы использовать «обход графика» с DFS или BFS, где источником будут все смежные шары того, который был поражен (и удален), а пунктом назначения будет ... если любой из соседних шаров (или «соседнихсмежный "шар ИЛИ" смежный соседний смежный "и т. д.) имеет метод getY () <= 0, т. е. найти путь к крыше. </p>
Эта проверка кажется очень дорогой, особенно если убрать один или два висящих шараЯ должен выполнить десятки поисков.Также имейте в виду, что, теоретически, к воздушному шару может быть прикреплено много других, и при этом его Якорь (тот, который поддерживает их всех на крыше) удаляется и удаляется, и поэтому все они должны уйти ... так что ...if (getAdjacent (). size () == 0) не будет работать.
1 - Есть ли какая-нибудь лучшая идея о том, что кажется таким простым для визуализации и реализовано во многих играх?2- Какие-нибудь вспомогательные методы, которые я могу добавить, чтобы помочь мне обнаружить шары?
Заранее спасибо за любую помощь