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



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

settings.py
def increase_speed(self):
...
self.alien_points = int(self.alien_points * self.score_scale)
print(self.alien_points)
Новое значение должно выводиться в терминальном окне каждый раз, когда игрок 
переходит на новый уровень.
ПРИМЕЧАНИЕ
Убедившись, что стоимость пришельцев действительно возрастает, не 
забудьте удалить команду 
print
; в противном случае лишний вывод повлияет на бы-
стродействие игры и будет отвлекать игрока .
Округление счета
В большинстве аркадных «стрелялок» счет ведется значениями, кратными 10, и мы 
воспользуемся этой схемой в своей игре. Давайте отформатируем счет так, чтобы 
в больших числах группы разрядов разделялись запятыми. Изменения вносятся 
в классе 
Scoreboard
:
scoreboard.py
def prep_score(self):
"""Преобразует текущий счет в графическое изображение."""

rounded_score = round(self.stats.score, -1)

score_str = "{:,}".format(rounded_score)
self.score_image = self.font.render(score_str, True,
self.text_color, self.ai_settings.bg_color)
...
Функция 
round()
обычно округляет дробное число до заданного количества зна-
ков, переданного во втором аргументе. Но если во втором аргументе передается 


Подсчет очков
309
отрицательное число, 
round()
округляет значение до ближайших десятков, сотен, 
тысяч и т. д. Код 

приказывает Python округлить значение 
stats.score
до десят-
ков и сохранить его в 
rounded_score
.
В точке 

директива форматирования строки приказывает Python вставить запя-
тые при преобразовании числового значения в строку — например, чтобы вместо 
1000000 выводилась строка 1,000,000. Теперь при запуске игры всегда будет ото-
бражаться аккуратно отформатированный, округленный счет (рис. 14.3).
Рис. 14.3.
Округленный счет с разделителями разрядов
Рекорды
Каждый игрок желает превзойти предыдущий рекорд игры, поэтому мы будем от-
слеживать и выводить рекорды, чтобы у игрока была ясная цель. Рекорды будут 
храниться в классе 
GameStats
:
game_stats.py
def __init__(self, ai_game):
...
# Рекорд не должен сбрасываться.
self.high_score = 0
Так как рекорд не должен сбрасываться при повторном запуске, значение 
high_
score
инициализируется в 
__init__()
, а не в 
reset_stats()
.


310

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




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

    Басты бет