Книга «Изучаем Python»



Pdf көрінісі
бет177/266
Дата03.03.2023
өлшемі7,86 Mb.
#170986
түріКнига
1   ...   173   174   175   176   177   178   179   180   ...   266
Байланысты:
Изучаем Python. Программирование игр, визуализация данных, веб-приложения ( PDFDrive )


Глава 14 • Ведение счета
 
score_str = str(self.stats.score)
 
self.score_image = self.font.render(score_str, True, self. 
text_color,
self.ai_settings.bg_color)
# Вывод счета в правой верхней части экрана.
 
self.score_rect = self.score_image.get_rect()
 
self.score_rect.right = self.screen_rect.right - 20
 
self.score_rect.top = 20
В методе 
prep_score()
преобразуем числовое значение 
stats.score
в строку 

; эта 
строка передается методу 
render()
, создающему изображение 

. Чтобы счет был 
хорошо виден на экране, мы передаем 
render()
цвет фона и цвет текста.
Счет размещается в правой верхней части экрана и расширяется влево с ростом 
значения и ширины числа. Чтобы счет всегда оставался выровненным по правой 
стороне, мы создаем прямоугольник 
rect
с именем 
score_rect

и смещаем его 
правую сторону на 20 пикселов от правого края экрана 

. Затем верхняя сторона 
прямоугольника смещается на 20 пикселов вниз от верхнего края экрана 

.
Остается создать метод 
show_score()
для вывода построенного графического изо-
бражения:
scoreboard.py
def show_score(self):
"""Выводит счет на экран."""
self.screen.blit(self.score_image, self.score_rect)
Метод выводит счет на экран в позиции, определяемой 
score_rect
.
Создание экземпляра 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)
 
sb = Scoreboard(ai_settings, screen, stats)
...
# Запуск основного цикла игры.
while True:
...
 
gf.update_screen(ai_settings, screen, stats, sb, ship,
aliens,
bullets, play_button)
run_game()


Подсчет очков
293
Мы импортируем новый класс 
Scoreboard
и создаем экземпляр 
sb
после создания 
экземпляра 
stats

. Затем экземпляр 
sb
передается методу 
update_screen()
, чтобы 
счет можно было вывести на экран 

.
Для отображения счета метод 
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.
Счет отображается в правом верхнем углу экрана
А теперь нужно организовать начисление очков за каждого пришельца!


294

Достарыңызбен бөлісу:
1   ...   173   174   175   176   177   178   179   180   ...   266




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

    Басты бет