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



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

271
alien_invasion.py
...
from bullet import Bullet
from alien import Alien
Обновленный метод 
__init__()
:
alien_invasion.py
def __init__(self):
...
self.ship = Ship(self)
self.bullets = pygame.sprite.Group()
self.aliens = pygame.sprite.Group()
self._create_fleet()
Создадим группу для хранения флота вторжения и вызовем метод 
_create_fleet()

который будет вскоре написан.
Новый метод 
_create_fleet()
выглядит так:
alien_invasion.py
def _create_fleet(self):
"""Создание флота вторжения."""
# Создание пришельца.
alien = Alien(self)
self.aliens.add(alien)
В этом методе создается один экземпляр 
Alien
, который затем добавляется в груп-
пу для хранения флота. По умолчанию объект размещается в левом верхнем углу 
экрана — эта позиция прекрасно подходит для первого пришельца.
Чтобы пришелец появился на экране, программа вызывает метод 
draw()
группы 
в 
_update_screen()
:
alien_invasion.py
def _update_screen(self):
...
for bullet in self.bullets.sprites():
bullet.draw_bullet()
self.aliens.draw(self.screen)
pygame.display.flip()
При вызове 
draw()
для группы Pygame выводит каждый элемент группы в пози-
ции, определяемой его атрибутом 
rect
. Метод 
draw()
получает один аргумент — 
поверхность для вывода элементов группы. На рис. 13.2 изображен первый 
пришелец.


272
Глава 13 • Осторожно, пришельцы!
Рис. 13.2.
Появился первый пришелец
После того как первый пришелец появится на экране, мы напишем код для вывода 
всего флота.
Построение флота
Чтобы нарисовать флот пришельцев, необходимо вычислить, сколько пришельцев 
поместится в одном ряду и сколько рядов поместится по высоте. Сначала мы вы-
числим горизонтальные интервалы между пришельцами и создадим ряд; затем 
будет вычислен вертикальный интервал и создан весь флот.
Вычисление количества пришельцев в одном ряду
Чтобы определить, сколько пришельцев помещается в одном ряду, сначала вычис-
лим доступное горизонтальное пространство. Ширина экрана хранится в 
settings.
screen_width
, но с обеих сторон экрана необходимо зарезервировать пустые ин-
тервалы. Определим их равными ширине одного пришельца. Так как ширина 
уменьшается на величину двух интервалов, доступное пространство равно ширине 
экрана за вычетом удвоенной ширины пришельца:
available_space_x = settings.screen_width — (2 * alien_width)
Также необходимо зарезервировать интервалы между пришельцами; они будут со-
ставлять одну ширину пришельца. Пространство, необходимое для вывода одного 


Построение флота
273
пришельца, равно его удвоенной ширине: одна ширина для самого пришельца и еще 
одна для пустого интервала справа. Чтобы определить количество пришельцев на 
экране, разделим доступное пространство на удвоенную ширину пришельца. При 
этом будет использоваться 
целочисленное деление
//
с потерей остатка, чтобы полу-
ченное количество пришельцев было целым:
number_aliens_x = available_space_x // (2 * alien_width)
Эти вычисления будут включены в программу при создании флота.


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




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

    Басты бет