Байланысты: Изучаем Python. Программирование игр, визуализация данных, веб-приложения ( PDFDrive )
237 ПРИМЕЧАНИЕ В Pygame начало координат (0, 0) находится в левом верхнем углу экрана, а оси направлены сверху
вниз и слева направо . На экране с размерами 1200 на 800 начало координат располагается в левом
верхнем углу, а правый нижний угол имеет координаты (1200, 800) .
Корабль будет расположен в середине нижней стороны экрана. Для этого мы сна-
чала сохраняем прямоугольник экрана в
self.screen_rect
, а затем присваиваем
self.rect.centerx
(координата
x центра корабля) значение атрибута
centerx
пря-
моугольника экрана
. Атрибуту
self.rect.bottom
(координата
y низа корабля)
присваивается значение атрибута
bottom
прямоугольника экрана. Pygame исполь-
зует эти атрибуты
rect
для позиционирования изображения, чтобы корабль был
выровнен по центру, а его нижний край совпадал с нижним краем экрана.
В точке
определяется метод
blitme()
, который выводит изображение на экран
в позиции, заданной
self.rect
.
Вывод корабля на экран
Изменим программу
alien_invasion .py
, чтобы в ней создавался корабль (экземпляр
Ship
) и вызывался метод
blitme()
класса
Ship
:
alien_invasion.py ...
from settings import Settings
from ship import Ship
def run_game():
...
pygame.display.set_caption("Alien Invasion")
# Создание корабля.
ship = Ship(screen)
# Start the main loop for the game.
while True:
...
# При каждом проходе цикла перерисовывается экран.
screen.fill(ai_settings.bg_color)
ship.blitme()
# Отображение последнего прорисованного экрана.
pygame.display.flip()
run_game()
После создания экрана программа импортирует класс
Ship
и создает его экземпляр
(с именем
ship
). Это должно происходить до начала основного цикла
while
,
чтобы при каждом проходе цикла не создавался новый экземпляр корабля. Чтобы
перерисовать корабль на экране, мы вызываем
ship.blitme()
после заполнения
фона, так что корабль выводится поверх фона
.
Если вы запустите
alien_invasion .py
сейчас, вы увидите пустой игровой экран, в цен-
тре нижней стороны которого находится корабль (рис. 12.2).