Рефакторинг update_bullets()

We use cookies. Read the Privacy and Cookie Policy

Переработаем функцию update_bullets(), чтобы она не решала такое количество разных задач. Код обработки коллизий будет выделен в отдельную функцию:

game_functions.py

def update_bullets(ai_settings, screen, ship, aliens, bullets):

...

# Уничтожение исчезнувших пуль.

for bullet in bullets.copy():

if bullet.rect.bottom <= 0:

bullets.remove(bullet)

check_bullet_alien_collisions(ai_settings, screen, ship, aliens, bullets)

. . . .

def check_bullet_alien_collisions(ai_settings, screen, ship, aliens, bullets):

. ."""Обработка коллизий пуль с пришельцами."""

. .# Удаление пуль и пришельцев, участвующих в коллизиях.

collisions = pygame.sprite.groupcollide(bullets, aliens, True, True)

if len(aliens) == 0:

# Уничтожение существующих пуль и создание нового флота.

bullets.empty()

create_fleet(ai_settings, screen, ship, aliens)

Мы создали новую функцию check_bullet_alien_collisions() для выявления коллизий между пулями и пришельцами и для реакции на уничтожение всего флота. Это сделано для того, чтобы сократить длину функции update_bullets() и упростить дальнейшую разработку.

Упражнения

13-5. Ловец: создайте игру с персонажем, который может двигаться влево и вправо у нижнего края экрана. Мяч появляется в случайной позиции у верхнего края и падает вниз с постоянной скоростью. Если персонаж «ловит» мяч, сталкиваясь с ним, мяч исчезает. Создавайте новый мяч каждый раз, когда персонаж ловит мяч или когда мяч исчезает у нижнего края экрана.