Создание класса Settings
Каждый раз, когда в нашу игру добавляется новая функциональность, также в нее обычно добавляются новые настройки (параметры конфигурации). Вместо того чтобы добавлять настройки в коде, мы напишем модуль с именем settings; этот модуль содержит класс с именем Settings для хранения всех настроек. Такое решение позволит передавать один объект вместо множества отдельных настроек. Кроме того, оно упрощает вызовы функций и упрощает изменение внешнего вида игры с ростом проекта. Чтобы внести изменения в игру, достаточно будет изменить некоторые значения в settings.py вместо того, чтобы искать разные настройки в файлах.
Исходная версия класса Settings выглядит так:
settings.py
class Settings():
. ."""Класс для хранения всех настроек игры Alien Invasion."""
. .def __init__(self):
. . . ."""Инициализирует настройки игры."""
. . . .# Параметры экрана
. . . .self.screen_width = 1200
. . . .self.screen_height = 800
. . . .self.bg_color = (230, 230, 230)
Чтобы создать экземпляр Settings и использовать его для обращения к настройкам, внесите изменения в alien_invasion.py:
alien_invasion.py
...
import pygame
from settings import Settings
def run_game():
. .# Инициализирует pygame, settings и объект экрана.
pygame.init()
(1) . .ai_settings = Settings()
(2) . .screen = pygame.display.set_mode(
. . . .(ai_settings.screen_width, ai_settings.screen_height))
pygame.display.set_caption("Alien Invasion")
# Запуск основного цикла игры.
while True:
...
# При каждом проходе цикла перерисовывается экран.
(3) . . . .screen.fill(ai_settings.bg_color)
. . . . . . . .
# Отображение последнего прорисованного экрана.
pygame.display.flip()
run_game()
Класс Settings импортируется в основной файл программы, после чего программа создает экземпляр Settings и сохраняет его в ai_settings после вызова pygame.init() (1) . При создании экрана (2) используются атрибуты screen_width и screen_height объекта ai_settings, после чего объект ai_settings также используется для получения цвета фона при заполнении экрана (3).