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



Pdf көрінісі
бет201/334
Дата18.10.2023
өлшемі6,19 Mb.
#186390
1   ...   197   198   199   200   201   202   203   204   ...   334
Байланысты:
Изучаем Python

alien_invasion.py
while True:
self._check_events()
self.ship.update()
self._update_bullets()
self._update_aliens()
self._update_screen()
Сейчас мы напишем код управления флотом, для которого будет создан новый 
метод с именем 
_update_aliens()
. Позиции пришельцев обновляются после об-
новления снарядов, потому что скоро мы будем проверять, попали ли какие-либо 
снаряды в пришельцев.


Перемещение флота
279
Местоположение этого метода в модуле некритично. Но для улучшения структуры 
кода мы разместим его сразу же после 
_update_bullets()
в соответствии с поряд-
ком вызова методов в цикле 
while
. Первая версия 
_update_aliens()
выглядит так:
alien_invasion.py
def _update_aliens(self):
"""Обновляет позиции всех пришельцев во флоте."""
self.aliens.update()
Мы используем метод 
update()
для группы 
aliens
, что приводит к автоматиче-
скому вызову метода 
update()
каждого пришельца. Если запустить Alien Invasion 
сейчас, вы увидите, как флот двигается вправо и исчезает за краем экрана.
Создание настроек для направления флота
Теперь мы создадим настройки, которые перемещают флот вниз по экрану, а потом 
влево при достижении правого края экрана. Вот как реализуется это поведение:
settings.py
# Настройки пришельцев
self.alien_speed = 1.0
self.fleet_drop_speed = 10
# fleet_direction = 1 обозначает движение вправо; а -1 - влево.
self.fleet_direction = 1
Настройка 
fleet_drop_speed
управляет величиной снижения флота при дости-
жении им края. Эту скорость полезно отделить от горизонтальной скорости при-
шельцев, чтобы эти две скорости можно было изменять независимо.
Для настройки 
fleet_direction
можно использовать текстовое значение (напри-
мер, 
'left'
или 
'right'
), но скорее всего, в итоге придется использовать набор 
команд 
if
-
elif
для проверки направления. Так как в данном случае направлений 
всего два, мы используем значения 1 и –1 и будем переключаться между ними при 
каждом изменении направления флота. (Числа в данном случае особенно удобны, 
потому что при движении вправо координата 
x
каждого пришельца должна увели-
чиваться, а при перемещении влево — уменьшаться.)
Проверка достижения края
Также нам понадобится метод для проверки того, достиг ли пришелец одного из 
двух краев. Для этого необходимо внести в метод 
update()
изменение, позволяющее 
каждому пришельцу двигаться в соответствующем направлении. Этот код является 

Достарыңызбен бөлісу:
1   ...   197   198   199   200   201   202   203   204   ...   334




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

    Басты бет