Книга «Изучаем Python»



Pdf көрінісі
бет128/238
Дата07.01.2022
өлшемі7,86 Mb.
#18670
түріКнига
1   ...   124   125   126   127   128   129   130   131   ...   238
Байланысты:
2 5343781172763690906

game_functions.py

def check_keydown_events(event, ship):

    """Реагирует на нажатие клавиш."""

if event.key == pygame.K_RIGHT:

ship.moving_right = True

elif event.key == pygame.K_LEFT:

ship.moving_left = True

def check_keyup_events(event, ship):

    """Реагирует на отпускание клавиш."""

if event.key == pygame.K_RIGHT:

ship.moving_right = False

elif event.key == pygame.K_LEFT:

ship.moving_left = False

def check_events(ship):

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

for event in pygame.event.get():

if event.type == pygame.QUIT:

sys.exit()

elif event.type == pygame.KEYDOWN:

            check_keydown_events(event, ship)



В двух словах    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

.



Достарыңызбен бөлісу:
1   ...   124   125   126   127   128   129   130   131   ...   238




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет