Округление счета

We use cookies. Read the Privacy and Cookie Policy

В большинстве аркадных «стрелялок» счет ведется значениями, кратными 10, и мы воспользуемся этой схемой в своей игре. Давайте отформатируем счет так, чтобы в больших числах группы разрядов разделялись запятыми. Изменения вносятся в классе Scoreboard:

scoreboard.py

def prep_score(self):

"""Преобразует текущий счет в графическое изображение."""

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

(2) . . . .score_str = "{:,}".format(rounded_score)

self.score_image = self.font.render(score_str, True, self.text_color,

self.ai_settings.bg_color)

...

Функция round() обычно округляет дробное число до заданного количества знаков, переданного во втором аргументе. Но если во втором аргументе передается отрицательное число, round() округляет значение до ближайших десятков, сотен, тысяч и т.д. Код (1) приказывает Python округлить значение stats.score до десятков и сохранить его в rounded_score.

примечание

В Python 2.7 функция round() всегда возвращает дробное значение, поэтому мы используем int(), чтобы гарантировать, что счет будет выводиться в виде целого числа. Если вы используете Python 3, вызов int() можно опустить.

Рис. 14.3. Округленный счет с разделителями групп

В точке (2) директива форматирования строки приказывает Python вставить запятые при преобразовании числового значения в строку — например, ­чтобы вместо 1000000 выводилась строка 1,000,000. Теперь при запуске игры ­всегда будет отображаться аккуратно отформатированный, округленный счет (рис. 14.3).