Повышение сложности
289
self.bullet_width = 3
self.bullet_height = 15
self.bullet_color = 60, 60, 60
self.bullets_allowed = 3
#
Настройки пришельцев
self.fleet_drop_speed = 10
# Темп ускорения игры
self.speedup_scale = 1.1
self.initialize_dynamic_settings()
Значения, которые остаются неизменными, по-прежнему инициализируются в ме-
тоде
__init__()
. В точке
добавляется настройка
speedup_scale
, управляющая
быстротой нарастания скорости; со значением 2 скорость удваивается каждый раз,
когда игрок переходит на следующий уровень, а со значением 1 скорость остается
постоянной. С таким значением, как 1,1, скорость будет увеличиваться в достаточ-
ной степени, чтобы игра усложнилась, но не стала невозможной. Наконец, вызов
initialize_dynamic_settings()
инициализирует значения атрибутов, которые
должны
изменяться в ходе игры
.
Код
initialize_dynamic_settings()
выглядит так:
settings.py
def initialize_dynamic_settings(self):
"""Инициализирует настройки, изменяющиеся в ходе игры."""
self.ship_speed_factor = 1.5
self.bullet_speed_factor = 3
self.alien_speed_factor = 1
# fleet_direction = 1
обозначает движение вправо; а -1 - влево.
self.fleet_direction = 1
Метод задает исходные значения скоростей корабля, пуль и пришельцев. Эти ско-
рости будут увеличиваться по ходу игры и будут сбрасываться каждый раз, когда
игрок запускает новую игру. Мы включаем в этот метод
fleet_direction
, чтобы
пришельцы в начале новой игры всегда двигались вправо.
Для увеличения скорости корабля, пуль и пришельцев каждый раз, когда
игрок достигает нового уровня, в программе используется функция
increase_
speed()
:
settings.py
def increase_speed(self):
"""Увеличивает настройки скорости."""
self.ship_speed_factor *= self.speedup_scale
self.bullet_speed_factor *= self.speedup_scale
self.alien_speed_factor *= self.speedup_scale
Чтобы увеличить скорость этих игровых элементов, мы умножаем каждую на-
стройку скорости на значение
s
peedup_scale
.