М97 Изучаем Python: программирование игр, визуализация данных, веб-приложения



Pdf көрінісі
бет195/334
Дата18.10.2023
өлшемі6,19 Mb.
#186390
1   ...   191   192   193   194   195   196   197   198   ...   334
Байланысты:
Изучаем Python

Рис. 13.1.
Пришелец, который будет использоваться для создания флота
Создание класса Alien
Теперь можно написать класс 
Alien
и сохранить его в файле 
alien .py
:


270
Глава 13 • Осторожно, пришельцы!
alien.py
import pygame
from pygame.sprite import Sprite
class Alien(Sprite):
"""Класс, представляющий одного пришельца."""
def __init__(self, ai_game):
"""Инициализирует пришельца и задает его начальную позицию."""
super().__init__()
self.screen = ai_game.screen
# Загрузка изображения пришельца и назначение атрибута rect.
self.image = pygame.image.load('images/alien.bmp')
self.rect = self.image.get_rect()
# Каждый новый пришелец появляется в левом верхнем углу экрана.

self.rect.x = self.rect.width
self.rect.y = self.rect.height
# Сохранение точной горизонтальной позиции пришельца.

self.x = float(self.rect.x)
В основном этот класс похож на класс 
Ship
(если не считать размещения при-
шельца). Изначально каждый пришелец размещается в левом верхнем углу экрана, 
при этом слева от него добавляется интервал, равный ширине пришельца, а над 
ним — интервал, равный высоте 

. Нас в первую очередь интересует горизонталь-
ная скорость пришельца, поэтому горизонтальная позиция каждого пришельца 
отслеживается точно 

.
Классу 
Alien
не нужен метод для вывода на экран; вместо этого мы воспользуемся 
методом групп Pygame, который автоматически рисует все элементы группы на 
экране.
Создание экземпляра Alien
Начнем с создания экземпляра 
Alien
, чтобы первый пришелец появился на экране. 
Так как эта операция входит в подготовительную часть, код для текущего экземп-
ляра будет добавлен в конец метода 
__init__()
в 
AlienInvasion
. Позднее будет 
создан целый флот вторжения, что потребует определенной работы, поэтому мы 
определим новый вспомогательный метод с именем 
_create_fleet()
.
Порядок следования методов в классе может быть любым — важно лишь, чтобы 
в этом порядке существовала некая закономерность. Я размещу 
_create_fleet()
не-
посредственно перед методом 
_update_screen()
, но с таким же успехом его можно 
разместить в любой точке 
AlienInvasion
. Начнем с импортирования класса 
Alien
.
Обновленные команды импортирования в файле 
alien_invasion .py
:


Создание пришельца


Достарыңызбен бөлісу:
1   ...   191   192   193   194   195   196   197   198   ...   334




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

    Басты бет