Функция update_screen()

We use cookies. Read the Privacy and Cookie Policy

Для дальнейшего упрощения run_game() выделим код обновления экрана в отдельную функцию update_screen() в game_functions.py:

game_functions.py

...

def check_events():

...

def update_screen(ai_settings, screen, ship):

. ."""Обновляет изображения на экране и отображает новый экран."""

# При каждом проходе цикла перерисовывается экран.

screen.fill(ai_settings.bg_color)

ship.blitme()

# Отображение последнего прорисованного экрана.

pygame.display.flip()

Новая функция update_screen() получает три параметра: ai_settings, screen и ship. Теперь необходимо заменить цикл while из alien_invasion.py вызовом update_screen():

alien_invasion.py

...

# Запуск основного цикла игры.

while True:

gf.check_events()

. . . .gf.update_screen(ai_settings, screen, ship)

run_game()

Эти две функции упрощают цикл while и процесс дальнейшей разработки. Бульшая часть работы будет выполняться не в run_game(), а в модуле game_functions.

Так как мы решили начать работу с кодом c одного файла, мы не стали вводить модуль game_functions с самого начала. Эта последовательность дает представление о реальном процессе разработки: сначала вы пишете свой код в самом простом виде, а потом подвергаете его рефакторингу по мере роста сложности проекта.

Теперь, когда мы изменили структуру кода и упростили его расширение, можно переходить к динамическим аспектам игры!

Упражнения

12-1. Синее небо: создайте окно Pygame с синим фоном.

12-2. Игровой персонаж: найдите изображение игрового персонажа, который вам нравится, в формате .bmp (или преобразуйте существующее изображение). Создайте класс, который рисует персонажа в центре экрана, и приведите цвет фона изображения в соответствие с цветом фона экрана (или наоборот).