Перемещение вправо

We use cookies. Read the Privacy and Cookie Policy

Чтобы корабли пришельцев перемещались по экрану, мы воспользуемся методом update() из alien.py, который будет вызываться для каждого пришельца в группе. Сначала добавим настройку для управления скоростью каждого пришельца:

settings.py

def __init__(self):

...

. .# Настройки пришельцев

. .self.alien_speed_factor = 1

Настройка используется в реализации update():

alien.py

def update(self):

. ."""Перемещает пришельца вправо."""

(1) . . . .self.x += self.ai_settings.alien_speed_factor

(2) . . . .self.rect.x = self.x

При каждом обновлении позиции пришельца мы смещаем его вправо на величину, хранящуюся в alien_speed_factor. Точная позиция пришельца хранится в атрибуте self.x, который может принимать вещественные значения (1) . Затем значение self.x используется для обновления позиции прямоугольника пришельца (2).

В основном цикле 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()

Мы используем метод update() для группы aliens, что приводит к автоматическому вызову метода update() каждого пришельца. Если запустить Alien Invasion сейчас, вы увидите, как флот двигается вправо и исчезает за краем экрана.