Проверка достижения края

We use cookies. Read the Privacy and Cookie Policy

Также нам понадобится метод для проверки того, достиг ли пришелец одного из двух краев. Для этого необходимо внести в метод update() изменение, позволяющее каждому пришельцу двигаться в соответствующем направлении:

alien.py

. .def check_edges(self):

. . . ."""Возвращает True, если пришелец находится у края экрана."""

. . . .screen_rect = self.screen.get_rect()

(1) . . . .if self.rect.right >= screen_rect.right:

. . . . . .return True

(2) . . . .elif self.rect.left <= 0:

. . . . . .return True

. . . . . .

def update(self):

. . . ."""Перемещает пришельца влево или вправо."""

(3) . . . .self.x += (self.ai_settings.alien_speed_factor *

. . . . . . . . . . . .self.ai_settings.fleet_direction)

self.rect.x = self.x

Вызов нового метода check_edges() для любого пришельца позволяет проверить, достиг ли он левого или правого края. У пришельца, находящегося у правого края, атрибут right его атрибута rect больше или равен атрибуту right атрибута rect экрана (1) . У пришельца, находящегося у левого края, значение left меньше либо равно 0 (2).

В метод update() будут внесены изменения, обеспечивающие перемещение влево и вправо (3); для этого скорость пришельца умножается на значение fleet_direction. Если значение fleet_direction равно 1, то значение alien_speed_factor прибавляется к текущей позиции пришельца; если же значение fleet_direction равно –1, то значение вычитается из позиции пришельца (который перемещается влево).