Создание класса Settings

We use cookies. Read the Privacy and Cookie Policy

Каждый раз, когда в нашу игру добавляется новая функциональность, также в нее обычно добавляются новые настройки (параметры конфигурации). Вместо того чтобы добавлять настройки в коде, мы напишем модуль с именем 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).