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



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


Глава 14 • Ведение счета
Теперь изменим класс 
Scoreboard
для отображения рекорда. Начнем с метода 
__init__()
:
scoreboard.py
def __init__(self, ai_game):
...
# Подготовка изображений счетов.
self.prep_score()

self.prep_high_score()
Рекорд должен отображаться отдельно от текущего счета, поэтому для подготовки 
его изображения понадобится новый метод 
prep_high_score()

:
scoreboard.py
def prep_high_score(self):
"""Преобразует рекордный счет в графическое изображение."""

high_score = round(self.stats.high_score, -1)
high_score_str = "{:,}".format(high_score)

self.high_score_image = self.font.render(high_score_str, True,
self.text_color, self.ai_settings.bg_color)
# Рекорд выравнивается по центру верхней стороны.
self.high_score_rect = self.high_score_image.get_rect()

self.high_score_rect.centerx = self.screen_rect.centerx

self.high_score_rect.top = self.score_rect.top
Рекорд округляется до десятков и форматируется с запятыми 

. Затем для рекорда 
строится графическое изображение 

, выполняется горизонтальное выравнивание 
прямоугольника по центру экрана 

, а атрибут 
top
прямоугольника приводится 
в соответствие с верхней стороной изображения счета 

.
Теперь метод 
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)
Для обновления рекорда в 
Scoreboard
добавляется новая функция 
check_high_
score()
:
scoreboard.py
def check_high_score(self):
"""Проверяет, появился ли новый рекорд."""
if self.stats.score > self.stats.high_score:
self.stats.high_score = self.stats.score
self.prep_high_score()


Подсчет очков
311
Метод 
check_high_score()
сравнивает текущий счет с рекордом. Если текущий 
счет выше, мы обновляем значение 
high_score
и вызываем 
prep_high_score()
для 
обновления изображения рекорда.
Метод 
check_high_score()
должен вызываться при каждом попадании в пришельца 
после обновления счета в 
_check_bullet_alien_collisions()
:


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




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

    Басты бет