Уничтожение пришельцев
271
Для проверки коллизий в функции
update_bullets()
используется следующий код:
game_functions.py
def update_bullets(aliens, bullets):
"""Обновляет позиции пуль и удаляет старые пули."""
...
# Проверка попаданий в пришельцев.
# При обнаружении попадания удалить пулю и пришельца.
collisions = pygame.sprite.groupcollide(bullets, aliens, True, True)
Новая строка сначала перебирает все пули в группе
bullets
, а затем перебирает
всех пришельцев в группе
aliens
. Каждый раз, когда между прямоугольником
пули и пришельца обнаруживается перекрытие,
groupcollide()
добавляет пару
«ключ—значение» в возвращаемый словарь. Два аргумента
True
сообщают Pygame,
нужно ли удалять столкнувшиеся объекты: пулю и пришельца. (Чтобы создать
сверхмощную пулю, которая будет уничтожать всех пришельцев на своем пути,
можно передать в первом аргументе
False
, а во втором
True
. Пришельцы, в которых
попадает пуля, будут исчезать, но все пули будут оставаться активными до верхнего
края экрана.)
При вызове
update_bullets()
передается аргумент
aliens
:
alien_invasion.py
# Запуск основного цикла игры.
while True:
gf.check_events(ai_settings, screen, ship, bullets)
ship.update()
gf.update_bullets(aliens, bullets)
gf.update_aliens(ai_settings, aliens)
gf.update_screen(ai_settings, screen, ship, aliens, bullets)
Достарыңызбен бөлісу: