Рефакторинг: модуль game_functions
239
"""Обрабатывает нажатия клавиш и события мыши."""
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
Этот модуль импортирует модули
sys
и
pygame
, используемые в цикле обработки
событий. На данный момент эта функция не получает параметров, а ее тело копи-
руется из
цикла событий в
alien_invasion .py
.
Теперь изменим код
alien_invasion .py
, чтобы он импортировал модуль
game_
functions
, и мы заменим цикл событий вызовом
check_events()
:
alien_invasion.py
import pygame
from settings import Settings
from
ship import Ship
import game_functions as gf
def run_game():
...
# Запуск основного цикла игры.
while True:
gf.check_events()
# При каждом проходе цикла перерисовывается экран.
...
Импортировать модуль
sys
прямо в главный файл в программы уже не нужно, по-
тому что он сейчас используется только в модуле
game_functions
. Импортируемому
модулю
game_functions
для удобства присваивается псевдоним
gf
.
Функция update_screen()
Для дальнейшего упрощения
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_
sc
reen()
: