Создание функции update_bullets()
Мы хотим, чтобы главный файл программы alien_invasion.py был как можно более простым, поэтому после написания и проверки кода управления пулями этот код можно переместить в модуль game_functions. Мы создадим новую функцию update_bullets() и добавим ее в конец game_functions.py:
game_functions.py
def update_bullets(bullets):
. ."""Обновляет позиции пуль и уничтожает старые пули."""
. .# Обновление позиций пуль.
bullets.update()
# Удаление пуль, вышедших за край экрана.
for bullet in bullets.copy():
if bullet.rect.bottom <= 0:
bullets.remove(bullet)
Код update_bullets() вырезается и вставляется из alien_invasion.py; единственным необходимым параметром функции является группа bullets.
Цикл while в alien_invasion.py снова выглядит просто:
alien_invasion.py
# Запуск основного цикла игры.
while True:
(1) gf.check_events(ai_settings, screen, ship, bullets)
(2)ship.update()
(3) . . . .gf.update_bullets(bullets)
(4)gf.update_screen(ai_settings, screen, ship, bullets)
В результате преобразования основной цикл содержит минимум кода, чтобы можно было легко прочитать имена функций и понять, что происходит в игре. Основной цикл проверяет ввод, полученный от игрока (1) , а затем обновляет позицию корабля (2) и всех выпущенных пуль (3). Затем обновленные позиции игровых элементов используются для вывода нового экрана в точке (4).