Функция check_events()

We use cookies. Read the Privacy and Cookie Policy

Начнем с перемещения кода управления событиями в отдельную функцию check_events(). Тем самым вы упростите run_game() и изолируете цикл управления событиями от остального кода. Изоляция цикла событий позволит организовать управление событиями отдельно от других аспектов игры (например, обновления экрана).

Поместим check_events() в отдельный модуль с именем game_functions:

game_functions.py

import sys

import pygame

def check_events():

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

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.