М97 Изучаем Python: программирование игр, визуализация данных, веб-приложения



Pdf көрінісі
бет206/334
Дата18.10.2023
өлшемі6,19 Mb.
#186390
1   ...   202   203   204   205   206   207   208   209   ...   334
Байланысты:
Изучаем Python


Глава 13 • Осторожно, пришельцы!
Такие изменения повышают эффективность тестирования, а заодно могут подска-
зать идеи для всевозможных игровых бонусов. (Только не забудьте восстановить 
нормальное состояние настроек после завершения тестирования.)
Восстановление флота
Одна из ключевых особенностей Alien Invasion — бесконечные орды пришельцев: 
каждый раз, когда вы уничтожаете один флот, на его месте появляется другой.
Чтобы после уничтожения одного флота появлялся другой, сначала нужно убе-
диться в том, что группа 
aliens
пуста. Если она пуста, вызывается метод 
_create_
fleet()
. Проверка будет выполняться в конце 
_update_bullets()
, потому что 
именно здесь уничтожаются отдельные пришельцы:
alien_invasion.py
def _update_bullets(self):
...

if not self.aliens:
# Уничтожение существующих снарядов и создание нового флота.

self.bullets.empty()
self._create_fleet()
В точке 

программа проверяет, пуста ли группа 
aliens
. Пустая группа интер-
претируется как 
False
; это самый простой способ проверить группу на наличие 
элементов. Если группа пуста, то все существующие снаряды убираются методом 
empty()
, который удаляет все существующие спрайты из группы 

. Вызов метода 
_create_fleet()
снова заполняет экран пришельцами.
Теперь сразу же после уничтожения текущего флота на экране появляется новый 
флот.
Ускорение снарядов
Попытавшись стрелять по пришельцам в текущем состоянии игры, можно заме-
тить, что скорость движения снарядов не оптимальна — в вашей системе она может 
быть слишком высокой или слишком низкой. На этой стадии можно изменить 
настройки, чтобы игра была более интересной и приятной.
Скорость снарядов можно увеличить настройкой 
bullet_speed
в 
settings .py
. Напри-
мер, если задать в моей системе значение 1.5, снаряды будут двигаться по экрану 
немного быстрее:
settings.py
# Настройки снарядов
self.bullet_speed = 1.5
self.bullet_width = 3
...


Завершение игры
285
Оптимальное значение этой настройки зависит от производительности вашей 
системы. Найдите значение, которое лучше подходит для вашей конкретной кон-
фигурации.
Рефакторинг _update_bullets()
Переработаем метод _
update_bullets()
, чтобы он не решал такое количество раз-
ных задач. Код обработки коллизий будет выделен в отдельный метод:


Достарыңызбен бөлісу:
1   ...   202   203   204   205   206   207   208   209   ...   334




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет