В
двух словах 247
elif event.type == pygame.KEYUP:
check_keyup_events(event, ship)
В программе появились две новые функции:
check_keydown_events()
и
check_
keyup_events()
. Каждая функция получает параметр
event
и параметр
ship
. Тела
двух функций скопированы из
check_events()
, а старый код заменен вызовами
новых функций. Новая структура кода упрощает функцию
check_events()
и об-
легчает последующее программирование реакции на действия игрока.
В
двух словах
В следующем разделе мы реализуем стрельбу, для чего нам потребуется но-
вый файл с именем
bullet .py
и изменения в некоторых уже имеющихся файлах.
В настоящее время программа состоит из четырех файлов с разными классами,
функциями и методами. Чтобы вы четко представляли себе структуру проекта,
кратко проанализируем каждый из этих файлов перед добавлением новой функ-
циональности.
alien_invasion .py
Главный файл программы
alien_invasion .py
создает ряд важных объектов, исполь-
зуемых ходе игры: настройки хранятся в
ai_settings
, основная поверхность для
вывода изображения хранится в
screen
, а экземпляр
ship
тоже создается в этом
файле. Также в
alien_invasion .py
содержится главный цикл игры — цикл
while
с вы-
зовами
check_events()
,
ship.update()
и
update_screen()
.
Файл
alien_invasion .py
— единственный файл, который должен запускаться для игры
в Alien Invasion. Все остальные файлы —
settings .py
,
game_functions .py
,
ship .py
— со-
держат код, который импортируется (прямо или косвенно) в этот файл.
settings .py
Файл
settings .py
содержит класс
Settings
. Этот класс содержит только метод
__init__()
, инициализирующий атрибуты, которые управляют внешним видом
и скоростью игры.
game_functions .py
Файл
game_functions .py
содержит набор функций, выполняющих основную
работу в игре. Функция
check_events()
обнаруживает события, представ-
ляющие интерес для игры (например, нажатия и отпускания клавиш), и об-
рабатывает все эти типы событий при помощи вспомогательных функций
check_keydown_events()
и
check_keyup_events()
. Пока эти функции управляют
только движением корабля. Модуль
game_functions
также содержит функцию
update_screen()
, которая перерисовывает экран при каждом проходе основного
цикла.
248 Глава 12 • Стреляющий
корабль
ship .py
Файл
ship .py
содержит класс
Ship
. В этом классе определен метод
__init__()
,
метод
update()
для управления позицией корабля и метод
blitme()
для вывода
изображения корабля на экран. Изображение корабля хранится в файле
ship .bmp
,
который находится в папке
images
.
Достарыңызбен бөлісу: