Достижение нижнего края экрана
Если пришелец добирается до нижнего края экрана, программа будет реагировать так же, как при столкновении с кораблем. Добавьте для проверки этого условия новую функцию, которая будет называться 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). Теперь новый флот будет появляться как при столкновении корабля с пришельцем, так и в том случае, если кто-то из пришельцев смог добраться до нижнего края экрана.