Проверка достижения края
Также нам понадобится метод для проверки того, достиг ли пришелец одного из двух краев. Для этого необходимо внести в метод 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, то значение вычитается из позиции пришельца (который перемещается влево).