Подсчет очков
291
Подсчет очков
Система подсчета очков позволит отслеживать счет игры в реальном времени; так-
же на экране будет выводиться текущий рекорд, уровень и количество оставшихся
кораблей. Счет игры также относится к игровой статистике, поэтому мы добавим
атрибут
score
в класс
GameStats
:
game_stats.py
class GameStats():
...
def reset_stats(self):
"""Инициализирует статистику, изменяющуюся в ходе игры."""
self.ships_left = self.ai_settings.ship_limit
self.score = 0
Чтобы счет сбрасывался при запуске новой игры, мы инициализируем
score
в
reset_stats()
вместо
__init__()
.
Вывод счета
Чтобы вывести счет на экран, мы сначала создаем новый класс
Scoreboard
. Пока
этот класс ограничивается выводом текущего счета, но мы используем его для вы-
вода рекордного счета, уровня и количества оставшихся кораблей. Ниже приведена
первая
часть класса;
сохраните ее под именем
scoreboard .py
:
scoreboard.py
import pygame.font
class Scoreboard():
"""Класс для вывода игровой информации."""
def __init__(self, ai_settings, screen, stats):
"""Инициализирует атрибуты подсчета очков."""
self.screen = screen
self.screen_rect = screen.get_rect()
self.ai_settings = ai_settings
self.stats = stats
# Настройки шрифта для вывода счета.
self.text_color = (30, 30, 30)
self.font = pygame.font.SysFont(None, 48)
# Подготовка исходного изображения.
self.prep_score()
Так как
Scoreboard
выводит текст на экран, код начинается с импортирования
модуля
pygame.font
. Затем
__init__()
передаются параметры
ai_settings
,
screen
и
stats
, чтобы класс мог выводить информацию об отслеживаемых показателях
.
Далее
назначается цвет текста
и создается
экземпляр объекта шрифта
.
Чтобы преобразовать выводимый текст в изображение, мы вызываем метод
prep_
score()
, который определяется следующим образом:
scoreboard.py
def prep_score(self):
"""Преобразует текущий счет в графическое изображение."""