Конец игры

We use cookies. Read the Privacy and Cookie Policy

Программа Alien Invasion уже на что-то похожа, но игра длится бесконечно. Значение ships_left просто продолжает уходить в отрицательную бесконечность. Добавим в GameStats новый атрибут — флаг game_active, который завершает игру после потери последнего корабля:

game_stats.py

def __init__(self, settings):

....

. .# Игра Alien Invasion запускается в активном состоянии.

. .self.game_active = True

Добавим в ship_hit() код, который сбрасывает флаг game_active в состояние False при потере игроком последнего корабля:

game_functions.py

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

"""Обрабатывает столкновение корабля с пришельцем."""

. .if stats.ships_left > 0:

# Уменьшение ships_left.

stats.ships_left -= 1

...

# Пауза.

sleep(0.5)

. .else:

. . . .stats.game_active = False

Бульшая часть кода ship_hit() осталась неизменной. Весь существующий код был перемещен в блок if, который проверяет, что у игрока остался хотя бы один корабль. Если корабли не кончились, программа создает новый флот, делает паузу и продолжает игру. Если же игрок потерял последний корабль, флаг game_active переводится в состояние False.