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
Достарыңызбен бөлісу: |