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



Pdf көрінісі
бет227/334
Дата18.10.2023
өлшемі6,19 Mb.
#186390
1   ...   223   224   225   226   227   228   229   230   ...   334
Байланысты:
Изучаем Python

alien_invasion.py
def _check_bullet_alien_collisions(self):
...
if collisions:

for aliens in collisions.values():
self.stats.score += self.settings.alien_points * len(aliens)
self.sb.prep_score()
...
Если словарь 
collisions
был определен, программа перебирает все значения 
в словаре 

. Вспомните, что каждое значение представляет собой список при-
шельцев, в которых попал один снаряд. Стоимость каждого пришельца умножается 
на количество пришельцев в списке, а результат прибавляется к текущему счету. 
Чтобы протестировать эту систему, увеличьте ширину снаряда до 300 пикселов 
и убедитесь в том, что игра начисляет очки за каждого пришельца, в которого попал 
этот большой снаряд; затем верните ширину снаряда к нормальному состоянию.
Увеличение стоимости пришельцев
Так как с каждым достижением нового уровня игра становится более сложной, за 
пришельцев на этих уровнях следует давать больше очков. Чтобы реализовать эту 
функциональность, мы добавим код, увеличивающий стоимость пришельцев при 
возрастании скорости игры:
settings.py
class Settings():
"""Класс для хранения всех настроек игры Alien Invasion."""
def __init__(self):
...
# Темп ускорения игры
self.speedup_scale = 1.1
# Темп роста стоимости пришельцев

self.score_scale = 1.5
self.initialize_dynamic_settings()
def initialize_dynamic_settings(self):
...


308
Глава 14 • Ведение счета
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

self.alien_points = int(self.alien_points * self.score_scale)
В программе определяется коэффициент прироста начисляемых очков, он на-
зывается 
score_scale

. С небольшим увеличением скорости (1,1) игра быстро 
усложняется, но чтобы увидеть заметную разницу в очках, необходимо изменять 
стоимость пришельцев в большем темпе (1,5). После увеличения скорости игры 
стоимость каждого попадания также увеличивается 

. Чтобы счет возрастал на 
целое количество очков, в программе используется функция 
int()
.
Чтобы увидеть стоимость каждого пришельца, добавьте в метод 
increase_speed()
в классе 
Settings
команду 
print
:


Достарыңызбен бөлісу:
1   ...   223   224   225   226   227   228   229   230   ...   334




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

    Басты бет