Создание экземпляра Scoreboard
Чтобы вывести счет, мы создадим в alien_invasion.py экземпляр Scoreboard:
alien_invasion.py
...
from game_stats import GameStats
from scoreboard import Scoreboard
...
def run_game():
...
. .# Создание экземпляров GameStats и Scoreboard.
stats = GameStats(ai_settings)
(1) . .sb = Scoreboard(ai_settings, screen, stats)
...
# Запуск основного цикла игры.
while True:
...
(2) . . . .gf.update_screen(ai_settings, screen, stats, sb, ship, aliens,
. . . . . .bullets, play_button)
run_game()
Мы импортируем новый класс Scoreboard и создаем экземпляр sb после создания экземпляра stats (1) . Затем экземпляр sb передается методу update_screen(), чтобы счет можно было вывести на экран (2).
Для отображения счета метод update_screen() изменяется следующим образом:
game_functions.py
def update_screen(ai_settings, screen, stats, sb, ship, aliens, bullets,
. . . .play_button):
...
. .# Вывод счета.
. .sb.show_score()
. .
# Кнопка Play отображается в том случае, если игра неактивна.
if not stats.game_active:
play_button.draw_button()
# Отображение последнего прорисованного экрана.
pygame.display.flip()
Мы добавляем sb в список параметров, определяющих update_screen(), и вызываем show_score() непосредственно перед отображением кнопки Play.
Если запустить Alien Invasion сейчас, в правом верхнем углу экрана отображается счет 0. (Пока мы просто хотим убедиться в том, что счет отображается в нужном месте, прежде чем заниматься дальнейшей доработкой системы подсчета очков.) На рис. 14.2 изображено окно игры перед ее началом.
Рис. 14.2. Счет отображается в правом верхнем углу экрана
А теперь нужно организовать начисление очков за каждого пришельца!