266
Глава 12 • Инопланетное вторжение
В любой момент времени на экране может находиться не более трех снарядов. Эта
настройка будет использоваться в
AlienInvasion
для проверки количества суще-
ствующих снарядов перед
созданием нового снаряда в
_fire_bullet()
:
alien_invasion.py
def _fire_bullet(self):
"""Создание нового снаряда и включение его в группу bullets."""
if len(self.bullets) < self.settings.bullets_allowed:
new_bullet = Bullet(self)
self.bullets.add(new_bullet).
При нажатии клавиши «пробел» программа проверяет длину
bullets
. Если значе-
ние
len(self.bullets)
меньше трех, создается новый снаряд. Но если на экране уже
находятся три активных снаряда, при нажатии пробела ничего не происходит. Если
вы запустите игру сейчас, вы сможете выпускать снаряды только группами по три.
Создание метода _update_bullets()
Мы хотим, чтобы класс
AlienInvasion
был как можно более простым, поэтому по-
сле написания и проверки кода управления снарядами этот код можно переместить
в отдельный метод. Мы создадим новый метод
_update_bullets()
и добавим его
непосредственно
перед
_update_screen()
:
alien_invasion.py
def _update_bullets(self):
"""Обновляет позиции снарядов и уничтожает старые снаряды."""
# Обновление позиций снарядов.
self.bullets.update()
#
Удаление снарядов, вышедших за край экрана.
for bullet in self.bullets.copy():
if bullet.rect.bottom <= 0:
self.bullets.remove(bullet)
Код
_update_bullets()
вырезается и вставляется из
run_game()
; мы всего лишь
немного уточнили комментарии.
Цикл
while
в
run_game()
снова выглядит просто:
Достарыңызбен бөлісу: