236 Глава 12 • Стреляющий
корабль
Создание класса Ship
После того как изображение корабля выбрано, его необходимо вывести на экран.
Для работы с кораблем мы напишем модуль
ship
, содержащий класс
Ship
. Этот
класс реализует бульшую часть поведения корабля.
ship.py
import pygame
class Ship():
def __init__(self, screen):
"""Инициализирует корабль и задает его начальную позицию."""
self.screen = screen
# Загрузка изображения корабля и получение прямоугольника.
self.image = pygame.image.load('images/ship.bmp')
self.rect = self.image.get_rect()
self.screen_rect = screen.get_rect()
# Каждый новый корабль появляется у нижнего края экрана.
self.rect.centerx = self.screen_rect.centerx
self.rect.bottom = self.screen_rect.bottom
def blitme(self):
"""Рисует корабль в текущей позиции."""
self.screen.blit(self.image, self.rect)
Сначала программа импортирует модуль
pygame
. Метод
__init__()
класса
Ship
по-
лучает два параметра: ссылку
self
и объект
screen
, на котором выводится корабль.
Загрузка изображения выполняется вызовом
pygame.image.load()
. Функция
возвращает поверхность, представляющую корабль; полученный объект сохраня-
ется в
self.image
.
После того как изображение будет загружено, метод
get_rect()
используется
для получения атрибута
rect
поверхности . Один из факторов эффективности
Pygame заключается в том, что программист может выполнять операции с игровы-
ми элементами как с прямоугольниками даже в том случае, если они имеют другую
форму. Операции с прямоугольниками эффективны, потому что прямоугольник —
простая геометрическая фигура. Обычно этот подход работает достаточно хорошо
и игроки не замечают, что программа не отслеживает точную геометрическую
форму каждого игрового элемента.
При работе с объектом
rect
для вас доступны координаты
x
и
y
верхней, нижней,
левой и правой сторон, а также центра. Присваивая любые из этих значений, вы
задаете текущую позицию прямоугольника.
Местонахождение центра игрового элемента определяется атрибутами
center
,
centerx
или
centery
прямоугольника. Стороны определяются атрибутами
top
,
bottom
,
left
и
right
. Для изменения горизонтального или вертикального рас-
положения прямоугольника достаточно задать атрибуты
x
и
y
, содержащие
координаты левого верхнего угла. Эти атрибуты избавляют вас от вычислений,
которые раньше разработчикам игр приходилось выполнять вручную, притом
достаточно часто.