Книга «Изучаем Python»


Глава 13 • Осторожно, пришельцы! Рис. 13.4



Pdf көрінісі
бет163/266
Дата03.03.2023
өлшемі7,86 Mb.
#170986
түріКнига
1   ...   159   160   161   162   163   164   165   166   ...   266
Байланысты:
Изучаем Python. Программирование игр, визуализация данных, веб-приложения ( PDFDrive )

266
Глава 13 • Осторожно, пришельцы!
Рис. 13.4.
На экране появился весь флот пришельцев
alien_invasion.py
# Создание флота пришельцев.
gf.create_fleet(ai_settings, screen, ship, aliens)
Если теперь запустить игру, вы увидите целый флот пришельцев (рис. 13.4).
В следующем разделе мы приведем флот в движение.
УПРАЖНЕНИЯ
13-1 . Звезды: найдите изображение звезды . Создайте на экране сетку из звезд .
13-2 . Звезды-2: чтобы звезды выглядели более реалистично, следует внести случайное 
отклонение при размещении звезд . Вспомните, что случайные числа генерируются следу-
ющим образом:
from random import randint
random_number = randint(-10,10)
Этот код возвращает случайное целое число в диапазоне от −10 до 10 . Используя свой код 
из упражнения 13-1, измените позицию каждой звезды на случайную величину .
Перемещение флота
Флот пришельцев должен двигаться вправо по экрану, пока не дойдет до края; 
тогда флот опускается на заданную величину и начинает двигаться в обратном 


Перемещение флота
267
направлении. Это продолжается до тех пор, пока все пришельцы не будут сбиты, 
один из них не столкнется с кораблем или не достигнет низа экрана. Начнем с пере-
мещения флота вправо.
Перемещение вправо
Чтобы корабли пришельцев перемещались по экрану, мы воспользуемся методом 
update()
из 
alien .py
, который будет вызываться для каждого пришельца в группе. 
Сначала добавим настройку для управления скоростью каждого пришельца:
settings.py
def __init__(self):
...
# Настройки пришельцев
self.alien_speed_factor = 1
Настройка используется в реализации 
update()
:
alien.py
def update(self):
"""Перемещает пришельца вправо."""
 
self.x += self.ai_settings.alien_speed_factor
 
self.rect.x = self.x
При каждом обновлении позиции пришельца мы смещаем его вправо на величину, 
хранящуюся в 
alien_speed_factor
. Точная позиция пришельца хранится в атрибу-
те 
self.x
, который может принимать вещественные значения 

. Затем значение 
self.x
используется для обновления позиции прямоугольника пришельца 

.
В основном цикле 
while
уже содержатся вызовы обновления корабля и пуль. Те-
перь необходимо также обновить позицию каждого пришельца:
alien_invasion.py
# Запуск основного цикла игры.
while True:
gf.check_events(ai_settings, screen, ship, bullets)
ship.update()
gf.update_bullets(bullets)
gf.update_aliens(aliens)
gf.update_screen(ai_settings, screen, ship, aliens, bullets)
Позиции пришельцев обновляются после обновления пуль, потому что скоро мы 
будем проверять, попали ли какие-либо пули в пришельцев.
Наконец, добавьте новую функцию 
update_aliens()
в конец файла 
game_functions .py
:
game_functions.py
def update_aliens(aliens):
"""Обновляет позиции всех пришельцев во флоте."""
aliens.update()


268

Достарыңызбен бөлісу:
1   ...   159   160   161   162   163   164   165   166   ...   266




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

    Басты бет