312
Глава 14 •
Ведение счета
Вывод
уровня
Чтобы в игре выводился текущий уровень, сначала в класс
GameStats
следует вклю-
чить атрибут для его представления. Чтобы уровень сбрасывался в начале каждой
игры,
инициализируйте его в
reset_stats()
:
game_stats.py
def reset_stats(self):
"""Инициализирует статистику, изменяющуюся в ходе игры."""
self.ships_left = self.ai_settings.ship_limit
self.score = 0
self.level = 1
Чтобы класс
Scoreboard
выводил текущий уровень, мы вызываем новый
метод
prep_level()
из
__init__()
:
scoreboard.py
def __init__(self, ai_game):
...
self.prep_high_score()
self.prep_level()
Метод
prep_level()
выглядит так:
scoreboard.py
def prep_level(self):
"""Преобразует уровень в графическое изображение."""
level_str = str(self.stats.level)
❶
self.level_image = self.font.render(level_str, True,
self.text_color, self.settings.bg_color)
# Уровень выводится под текущим счетом.
self.level_rect = self.level_image.get_rect()
❷
self.level_rect.right = self.score_rect.right
❸
self.level_rect.top = self.score_rect.bottom + 10
Метод
prep_level()
создает изображение на базе значения, хранящегося в
stats.
level
, и приводит атрибут
right
изображения в соответствие с атрибутом
right
счета
. Затем атрибут
top
сдвигается на 10 пикселов ниже нижнего края
изображения текущего счета, чтобы между счетом и уровнем оставался пустой
интервал
.
В метод
show_score()
также необходимо внести изменения:
scoreboard.py
def show_score(self):
"""Выводит
текущий счет, рекорд и число оставшихся кораблей."""
self.screen.blit(self.score_image, self.score_rect)
self.screen.blit(self.high_score_image, self.high_score_rect)
self.screen.blit(self.level_image, self.level_rect)
Подсчет очков
313
Добавленная строка
выводит на экран изображение, представляющее уровень.
Увеличение
stats.level
и обновление изображения уровня выполняются в
_check_
bullet_alien_collisions()
:
Достарыңызбен бөлісу: