ПРИМЕЧАНИЕ
У вычислений в программировании есть одна замечательная особенность: не обязательно быть
полностью уверенным в правильности формулы, когда вы ее пишете . Вы можете опробовать
формулу на практике и посмотреть, что из этого получится . В худшем случае получится экран,
до отказа забитый пришельцами, — или наоборот, пустой . В этом случае вы пересмотрите формулу
на основании полученных результатов .
Построение флота
261
Создание ряда
Чтобы создать один ряд пришельцев, сначала создадим в
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()
aliens = Group()
# Создание флота пришельцев.
gf.create_fleet(ai_settings, screen, aliens)
# Запуск основного цикла игры.
while True:
...
gf.update_screen(ai_settings, screen, ship, aliens,
bullets)
run_game()
Так как пришельцы уже не создаются напрямую в
alien_invasion .py
, импортировать
класс
Alien
в этот файл не обязательно.
Создайте пустую группу для хранения всех пришельцев в игре
. Затем создайте
новую функцию
create_fleet()
, которую мы вскоре вызовем, и передайте ей
ai_settings
, объект
screen
и пустую группу
aliens
. Затем измените вызов
update_
screen()
, чтобы предоставить функции доступ к группе пришельцев
.
Также необходимо внести изменения в
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)
рисует каждого пришельца в группе
на экране.
262
Достарыңызбен бөлісу: |