Книга «Изучаем Python»


Рис. 13.1. Пришелец, который будет использоваться для создания флота 258



Pdf көрінісі
бет158/266
Дата03.03.2023
өлшемі7,86 Mb.
#170986
түріКнига
1   ...   154   155   156   157   158   159   160   161   ...   266
Байланысты:
Изучаем Python. Программирование игр, визуализация данных, веб-приложения ( PDFDrive )

Рис. 13.1.
Пришелец, который будет использоваться для создания флота


258
Глава 13 • Осторожно, пришельцы!
собственное изображение пришельца или использовать изображение на рис. 13.1, 
доступное в ресурсах книги по адресу 
https://www.nostarch.com/pythoncrashcourse/

Это изображение имеет серый фон, совпадающий с цветом фона экрана. Не за-
будьте сохранить выбранный файл в каталоге 
images
.
Создание класса Alien
Теперь можно написать класс 
Alien
:
alien.py
import pygame
from pygame.sprite import Sprite
class Alien(Sprite):
"""Класс, представляющий одного пришельца."""
def __init__(self, ai_settings, screen):
"""Инициализирует пришельца и задает его начальную позицию."""
super(Alien, self).__init__()
self.screen = screen
self.ai_settings = ai_settings
# Загрузка изображения пришельца и назначение атрибута 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)
def blitme(self):
"""Выводит пришельца в текущем положении."""
self.screen.blit(self.image, self.rect)
В основном этот класс похож на класс 
Ship
(если не считать размещения пришель-
ца). Изначально каждый пришелец размещается в левом верхнем углу экрана, при 
этом слева от него добавляется интервал, равный ширине пришельца, а над ним — 
интервал, равный высоте 

.
Создание экземпляра Alien
Создадим экземпляр 
Alien
в 
alien_invasion .py
:
alien_invasion.py
...
from ship import Ship
from alien import Alien
import game_functions as gf


Создание пришельца
259
def run_game():
...
# Создание пришельца.
alien = Alien(ai_settings, screen)
# Запуск основного цикла игры.
while True:
gf.check_events(ai_settings, screen, ship, bullets)
ship.update()
gf.update_bullets(bullets)
gf.update_screen(ai_settings, screen, ship, alien, bullets)
run_game()
Программа импортирует новый класс 
Alien
и создает экземпляр 
Alien
непосред-
ственно перед входом в основной цикл 
while
. Так как позиция пришельца еще 
не успела измениться, ничего нового в цикле не добавляется; изменения вносятся 
только в вызов 
update_screen()
, которому передается экземпляр 
alien
.
Отображение пришельца на экране
Рис. 13.2.
Появился первый пришелец
Чтобы пришелец появился на экране, программа вызывает его метод 
blitme()
в 
update_screen()
:
game_functions.py
def update_screen(ai_settings, screen, ship, alien, bullets):
...


260

Достарыңызбен бөлісу:
1   ...   154   155   156   157   158   159   160   161   ...   266




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

    Басты бет