292
Глава 13 •
Осторожно, пришельцы!
Итоги
В этой главе вы научились добавлять в игру большое количество одинаковых
элементов на примере флота пришельцев. Вы узнали, как использовать вложен-
ные циклы для создания сетки с элементами, а также привели игровые элементы
в движение, вызывая метод
update()
каждого элемента. Вы научились управлять
перемещением объектов на экране и обрабатывать различные события (например,
достижение края экрана). Вы также узнали, как обнаруживать коллизии и реаги-
ровать на них (на примере попадания снарядов в пришельцев и столкновения при-
шельцев с кораблем). В завершение главы рассматривалась тема ведения игровой
статистики
и использования флага
game_active
для проверки окончания игры.
В последней главе этого проекта будет добавлена кнопка
Play
, чтобы игрок мог
самостоятельно запустить свою первую игру, а также повторить игру после ее за-
вершения. После каждого уничтожения вражеского флота скорость игры будет
возрастать, а мы реализуем систему подсчета очков. В результате вы получите
полностью работоспособную игру.
14
Ведение счета
В этой главе построение игры Alien Invasion будет завершено. Мы добавим кнопку
Play
для запуска игры по желанию игрока или перезапуска игры после ее завер-
шения. Мы также изменим игру, чтобы она ускорялась при переходе игрока на
следующий уровень, а также реализуем систему подсчета очков. К концу главы
вы будете знать достаточно, чтобы заняться разработкой игр, сложность которых
нарастает по ходу игры и в которых реализована система подсчета очков.
Добавление
кнопки Play
В этом разделе мы добавим кнопку
Play
, которая отображается перед началом игры
и появляется
после ее завершения, чтобы игрок мог сыграть снова.
В текущей версии игра начинается сразу же после запуска
alien_invasion .py
. После
очередных изменений игра будет запускаться в неактивном состоянии и предла-
гать игроку нажать кнопку
Play
для запуска. Для этого включите следующий код
в метод
__init__()
класса
GameStats
:
game_stats.py
def __init__(self, ai_game):
"""Инициализирует статистику."""
self.settings = ai_game.settings
self.reset_stats()
# Игра запускается в неактивном состоянии.
self.game_active = False
Итак, программа запускается в неактивном состоянии, а игру можно запустить
только
нажатием кнопки
Play
.
Создание
класса Button
Так как в Pygame не существует встроенного метода создания кнопок, мы напишем
класс
Button
для создания заполненного прямоугольника с текстовой надписью.