Добавление
изображения корабля
247
def __init__(self, ai_game):
"""Инициализирует корабль и задает его начальную позицию."""
❶
self.screen = ai_game.screen
❷
self.screen_rect = ai_game.screen.get_rect()
# Загружает изображение корабля и получает прямоугольник.
❸
self.image = pygame.image.load('images/ship.bmp')
self.rect = self.image.get_rect()
# Каждый новый корабль появляется у нижнего края экрана.
❹
self.rect.midbottom = self.screen_rect.midbottom
❺
def blitme(self):
"""Рисует корабль в текущей позиции."""
self.screen.blit(self.image, self.rect)
Один из факторов эффективности Pygame заключается в том, что программист
может выполнять операции с игровыми элементами как с прямоугольниками даже
в том случае, если они имеют другую форму. Операции с прямоугольниками эф-
фективны, потому что прямоугольник — простая геометрическая фигура. Обычно
этот подход работает достаточно хорошо, и игроки не замечают, что программа не
отслеживает точную геометрическую форму каждого игрового элемента. В этом
классе корабль и экран будут рассматриваться как прямоугольные объекты.
Перед определением класса программа импортирует модуль
pygame
. Метод
__init__()
класса
Ship
получает два параметра: ссылку
self
и ссылку на текущий
экземпляр класса
AlienInvasion
, так класс
Ship
получает доступ ко всем игровым
ресурсам, определенным в
AlienInvasion
. В точке
экран присваивается атрибуту
Ship
, чтобы к нему можно было легко обращаться во всех модулях класса. В точ-
ке
программа обращается к атрибуту
rect
объекта экрана при помощи метода
get_rect()
и присваивает его
self.screen_rect
. Это позволяет разместить корабль
в нужной позиции экрана.
Чтобы загрузить изображение, мы вызываем метод
pygame.image.load()
и пере-
даем ему местоположение изображения корабля. Функция возвращает поверх-
ность,
представляющую корабль, которая присваивается
self.image
.
Когда изображение будет загружено, программа вызывает
get_rect()
для полу-
чения атрибута
rect
поверхности корабля, чтобы позднее использовать ее для
позиционирования корабля.
При работе с объектом
rect
вам доступны координаты
x
и
y
верхней, нижней, левой
и правой сторон, а также центра. Присваивая любые из этих значений, вы задаете
текущую позицию прямоугольника. Местонахождение центра игрового элемента
определяется атрибутами
center
,
centerx
или
centery
прямоугольника. Стороны
определяются атрибутами
top
,
bottom
,
left
и
right
. Также имеются атрибуты, ко-
торые являются комбинацией этих свойств, например
midbottom
,
midtop
,
midleft
и
midright
. Для изменения горизонтального или вертикального расположения
прямоугольника достаточно задать атрибуты
x
и
y
, содержащие координаты левого
верхнего угла. Эти атрибуты избавляют вас от вычислений, которые раньше раз-
работчикам игр
приходилось выполнять вручную, притом достаточно часто.