Создание ряда
Чтобы создать один ряд пришельцев, сначала создадим в alien_invasion.py пустую группу с именем aliens для хранения всех пришельцев, а затем вызовем функцию в game_functions.py для создания флота:
alien_invasion.py
import pygame
from pygame.sprite import Group
from settings import Settings
from ship import Ship
import game_functions as gf
def run_game():
...
. .# Создание корабля, группы пуль и группы пришельцев.
ship = Ship(ai_settings, screen)
bullets = Group()
(1) . .aliens = Group()
. .
. .# Создание флота пришельцев.
(2) . .gf.create_fleet(ai_settings, screen, aliens)
# Запуск основного цикла игры.
while True:
...
(3) . . . .gf.update_screen(ai_settings, screen, ship, aliens, bullets)
run_game()
Так как пришельцы уже не создаются напрямую в alien_invasion.py, импортировать класс Alien в этот файл не обязательно.
Создайте пустую группу для хранения всех пришельцев в игре (1) . Затем создайте новую функцию create_fleet() (2), которую мы вскоре вызовем, и передайте ей ai_settings, объект screen и пустую группу aliens. Затем измените вызов update_screen(), чтобы предоставить функции доступ к группе пришельцев (3).
Также необходимо внести изменения в update_screen():
game_functions.py
def update_screen(ai_settings, screen, ship, aliens, bullets):
...
ship.blitme()
. .aliens.draw(screen)
. . . . . .
# Отображение последнего прорисованного экрана.
pygame.display.flip()
Когда вы вызываете метод draw() для группы, Pygame автоматически выводит каждый элемент группы в позиции, определяемой его атрибутом rect. В данном случае вызов aliens.draw(screen) рисует каждого пришельца в группе на экране.