# Создание флота пришельцев.
Если теперь запустить игру, вы увидите целый флот пришельцев (рис. 13.4).
13-1 . Звезды: найдите изображение звезды . Создайте на экране сетку из звезд .
13-2 . Звезды-2: чтобы звезды выглядели более реалистично, следует внести случайное
отклонение при размещении звезд . Вспомните, что случайные числа генерируются следу-
Этот код возвращает случайное целое число в диапазоне от −10 до 10 . Используя свой код
Перемещение флота
267
направлении. Это продолжается до тех пор, пока все пришельцы не будут сбиты,
один из них не столкнется с кораблем или не достигнет низа экрана. Начнем с пере-
мещения флота вправо.
Перемещение вправо
Чтобы корабли пришельцев перемещались по экрану, мы воспользуемся методом
update()
из
alien .py
, который будет вызываться для каждого пришельца в группе.
Сначала добавим настройку для управления скоростью каждого пришельца:
settings.py
def __init__(self):
...
# Настройки пришельцев
self.alien_speed_factor = 1
Настройка используется в реализации
update()
:
alien.py
def update(self):
"""Перемещает пришельца вправо."""
self.x += self.ai_settings.alien_speed_factor
self.rect.x = self.x
При каждом обновлении позиции пришельца мы смещаем его вправо на величину,
хранящуюся в
alien_speed_factor
. Точная позиция пришельца хранится в атрибу-
те
self.x
, который может принимать вещественные значения . Затем значение
self.x
используется для обновления позиции прямоугольника пришельца .
В основном цикле
while
уже содержатся вызовы обновления корабля и пуль. Те-
перь необходимо также обновить позицию каждого пришельца:
alien_invasion.py
# Запуск основного цикла игры.
while True:
gf.check_events(ai_settings, screen, ship, bullets)
ship.update()
gf.update_bullets(bullets)
gf.update_aliens(aliens)
gf.update_screen(ai_settings, screen, ship, aliens, bullets)
Позиции пришельцев обновляются после обновления пуль, потому что скоро мы
будем проверять, попали ли какие-либо пули в пришельцев.
Наконец, добавьте новую функцию
update_aliens()
в конец файла
game_functions .py
:
game_functions.py
def update_aliens(aliens):
"""Обновляет позиции всех пришельцев во флоте."""
aliens.update()
268 Глава 13 • Осторожно, пришельцы!
Мы используем метод
update()
для группы
aliens
, что приводит к автоматиче-
скому вызову метода
update()
каждого пришельца. Если запустить Alien Invasion
сейчас, вы увидите, как флот двигается вправо и исчезает за краем экрана.
Создание настроек для направления флота
Теперь мы создадим настройки, которые перемещают флот вниз по экрану, а потом
влево при достижении правого края экрана. Вот как реализуется это поведение:
Достарыңызбен бөлісу: