Добавление кнопки Play
283
font.render()
также передается логический признак режима сглаживания текста.
В остальных аргументах передаются цвет шрифта и цвет фона. В нашем примере
режим сглаживания включен (
True
), а цвет фона совпадает с цветом фона кнопки.
(Если цвет фона не указан, Pygame пытается вывести шрифт с прозрачным фоном.)
В точке изображение текста выравнивается по центру кнопки, для чего создается
объект
rect
изображения, а его атрибут
center
приводится в соответствие с одно-
именным атрибутом кнопки.
Остается создать метод
draw_button()
, который может вызываться для отображе-
ния кнопки на экране:
button.py
def draw_button(self):
# Отображение пустой кнопки и вывод сообщения.
self.screen.fill(self.button_color, self.rect)
self.screen.blit(self.msg_image, self.msg_image_rect)
Вызов метода
screen.fill()
рисует прямоугольную часть кнопки. Затем вызов
screen.blit()
выводит изображение текста на экран с передачей изображения
и объекта
rect
, связанного с изображением. Класс
Button
готов.
Вывод кнопки на экран
В программе класс
Button
используется для создания кнопки
Play
. Так как нам
нужна только одна кнопка
Play
, мы создадим кнопку прямо в файле
alien_invasion .py
:
alien_invasion.py
...
from game_stats import GameStats
from button import Button
...
def run_game():
...
pygame.display.set_caption("Alien Invasion")
# Создание кнопки Play.
play_button = Button(ai_settings, screen, "Play")
...
# Запуск основного цикла игры.
while True:
...
gf.update_screen(ai_settings, screen, stats, ship, aliens,
bullets,
play_button)
run_game()
Программа импортирует класс
Button
и создает экземпляр
play_button
, после
чего передает
play_button
функции
update_screen()
, чтобы кнопка появлялась
при обновлении экрана .
284 Глава 14 • Ведение счета
Затем следует внести изменения в
update_screen()
, чтобы кнопка
Play
появлялась
только в неактивном состоянии игры:
game_functions.py
def update_screen(ai_settings, screen, stats, ship, aliens, bullets,
play_button):
"""Обновляет изображения на экране и отображает новый экран."""
...
# Кнопка Play отображается в том случае, если игра неактивна.
if not stats.game_active:
play_button.draw_button()
# Отображение последнего прорисованного экрана.
pygame.display.flip()
Чтобы кнопка
Play
не закрывалась другими элементами экрана, мы отображаем
ее после всех остальных игровых элементов, но перед переключением на новый
экран. Теперь при запуске Alien Invasion в центре экрана отображается кнопка
Play
(рис. 14.1).
Достарыңызбен бөлісу: