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


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



Pdf көрінісі
бет139/238
Дата07.01.2022
өлшемі7,86 Mb.
#18670
түріКнига
1   ...   135   136   137   138   139   140   141   142   ...   238
Байланысты:
2 5343781172763690906

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    Глава 13  •  Осторожно, пришельцы!

Мы используем метод 

update()

 для группы 

aliens

, что приводит к автоматиче-



скому вызову метода 

update()


 каждого пришельца. Если запустить Alien Invasion 

сейчас, вы увидите, как флот двигается вправо и исчезает за краем экрана.

Создание настроек для направления флота

Теперь мы создадим настройки, которые перемещают флот вниз по экрану, а потом 

влево при достижении правого края экрана. Вот как реализуется это поведение:



Достарыңызбен бөлісу:
1   ...   135   136   137   138   139   140   141   142   ...   238




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

    Басты бет