Достижение нижнего края экрана

We use cookies. Read the Privacy and Cookie Policy

Если пришелец добирается до нижнего края экрана, программа будет реагировать так же, как при столкновении с кораблем. Добавьте для проверки этого условия новую функцию, которая будет называться update_aliens():

game_functions.py

def check_aliens_bottom(ai_settings, stats, screen, ship, aliens, bullets):

. ."""Проверяет, добрались ли пришельцы до нижнего края экрана."""

. .screen_rect = screen.get_rect()

. .for alien in aliens.sprites():

(1) . . . .if alien.rect.bottom >= screen_rect.bottom:

. . . . . .# Происходит то же, что при столкновении с кораблем.

. . . . . .ship_hit(ai_settings, stats, screen, ship, aliens, bullets)

. . . . . .break

. . . . . .

def update_aliens(ai_settings, stats, screen, ship, aliens, bullets):

...

. .# Проверка пришельцев, добравшихся до нижнего края экрана.

(2) . .check_aliens_bottom(ai_settings, stats, screen, ship, aliens, bullets)

Функция check_aliens_bottom() проверяет, есть ли хотя бы один пришелец, добравшийся до нижнего края экрана. Условие выполняется, когда атрибут rect.bottom пришельца больше или равен атрибуту rect.bottom экрана (1) . Если пришелец добрался до низа, вызывается функция ship_hit(). Если хотя бы один пришелец добрался до нижнего края, проверять остальных уже не нужно, поэтому после вызова ship_hit() цикл прерывается.

Функция check_aliens_bottom() вызывается после обновления позиций всех пришельцев и после проверки столкновений «пришелец-корабль» (2). Теперь новый флот будет появляться как при столкновении корабля с пришельцем, так и в том случае, если кто-то из пришельцев смог добраться до нижнего края экрана.