Байланысты: Изучаем Python. Программирование игр, визуализация данных, веб-приложения ( PDFDrive )
Глава 14 • Ведение счета
sb.prep_score()
sb.prep_high_score()
sb.prep_level()
# Очистка списков пришельцев и пуль.
aliens.empty()
bullets.empty()
...
Определению
check_play_button()
необходим объект
sb
. Чтобы сбросить изобра-
жения на экране, после сброса игровых настроек следуют вызовы
prep_score()
,
prep_high_score()
и
prep_level()
.
Затем объект
sb
передается
check_events()
, чтобы объект
Scoreboard
был доступен
для
check_play_button()
:
game_functions.py def check_events(ai_settings, screen, stats, sb, play_button, ship, aliens,
bullets):
"""Обрабатывает нажатия клавиш и события мыши."""
for event in pygame.event.get():
if event.type == pygame.QUIT:
...
elif event.type == pygame.MOUSEBUTTONDOWN:
mouse_x, mouse_y = pygame.mouse.get_pos()
check_play_button(ai_settings, screen, stats, sb, play_
button,
ship, aliens, bullets, mouse_x, mouse_y)
Определение
check_events()
должно получать
sb
в параметре, чтобы при вызове
check_play_button()
можно было передать
sb
в аргументе
.
Остается обновить вызов
check_events()
в
alien_invasion .py
, чтобы в нем также
передавался объект
sb
:
alien_invasion.py # Запуск основного цикла игры.
while True:
gf.check_events(ai_settings, screen, stats, sb, play_button, ship,
aliens, bullets)
...
Теперь количество пройденных уровней отображается на экране (рис. 14.5).
ПРИМЕЧАНИЕ В некоторых классических играх выводимая информация снабжается текстовыми метками: «Уро-
вень», «Рекорд» и т . д . Мы эти метки опустили, потому что смысл каждого числа понятен каждому,
кто сыграл в Alien Invasion . Если вы включите эти метки, добавьте их в строки непосредственно
перед вызовами font .render() в Scoreboard .