М97 Изучаем Python: программирование игр, визуализация данных, веб-приложения



Pdf көрінісі
бет221/334
Дата18.10.2023
өлшемі6,19 Mb.
#186390
1   ...   217   218   219   220   221   222   223   224   ...   334
Байланысты:
Изучаем Python


Глава 14 • Ведение счета
Изменение настроек скорости
Начнем с реорганизации класса 
Settings
и разделения настроек игры на две кате-
гории: постоянные и изменяющиеся. Также необходимо проследить за тем, чтобы 
настройки, изменяющиеся в ходе игры, сбрасывались в исходное состояние в на-
чале новой игры. Метод 
__init__()
из файла 
settings .py
выглядит так:
settings.py
def __init__(self):
"""Инициализирует статические настройки игры."""
# Настройки экрана
self.screen_width = 1200
self.screen_height = 800
self.bg_color = (230, 230, 230)
# Настройки корабля
self.ship_limit = 3
# Настройки снарядов
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.0
self.alien_speed_factor = 1.0
# fleet_direction = 1 обозначает движение вправо; а -1 - влево.
self.fleet_direction = 1


Повышение сложности
301
Метод задает исходные значения скоростей корабля, снарядов и пришельцев. Эти 
скорости будут увеличиваться по ходу игры и сбрасываться каждый раз, когда 
игрок запускает новую игру. Мы включаем в этот метод 
fleet_direction
, чтобы 
пришельцы в начале новой игры всегда двигались вправо. Увеличивать значение 
fleet_drop_speed
не нужно, потому что когда пришельцы быстрее двигаются по 
горизонтали, они также будут быстрее перемещаться по вертикали.
Для увеличения скорости корабля, снарядов и пришельцев каждый раз, когда игрок 
достигает нового уровня, мы напишем новый метод 
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
Чтобы увеличить скорость этих игровых элементов, мы умножаем каждую на-
стройку скорости на значение 
speedup_scale
.
Темп игры повышается вызовом 
increase_speed()
в 
check_bullet_alien_
collisions()
при уничтожении последнего пришельца во флоте, но перед созда-
нием нового флота:


Достарыңызбен бөлісу:
1   ...   217   218   219   220   221   222   223   224   ...   334




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет