280
Глава 13 •
Осторожно, пришельцы!
screen_rect = self.screen.get_rect()
❶
if self.rect.right >= screen_rect.right or self.rect.left <= 0:
return True
def update(self):
"""Перемещает пришельца влево или вправо."""
❷
self.x += (self.settings.alien_speed *
self.settings.fleet_direction)
self.rect.x = self.x
Вызов нового метода
check_edges()
для любого пришельца позволяет проверить,
достиг ли он левого или правого края. У пришельца, находящегося у правого края,
атрибут
right
его атрибута
rect
больше или равен атрибуту
right
атрибута
rect
экра-
на. У пришельца, находящегося у левого края, значение
left
меньше либо равно 0
.
В метод
update()
будут внесены изменения, обеспечивающие перемещение
влево и вправо; для этого скорость пришельца умножается на значение
fleet_
direction
. Если значение
fleet_direction
равно 1, то значение
alien_speed
прибавляется к текущей позиции пришельца и пришелец перемещается вправо;
если же значение
fleet_direction
равно –1, то значение вычитается из позиции
пришельца (который перемещается влево).
Снижение
флота и смена направления
Когда пришелец доходит до края, весь флот должен опуститься вниз и изменить
направление движения. Это означает, что в
AlienInvasion
придется внести из-
менения, потому что именно здесь программа проверяет, достиг ли какой-либо
пришелец левого или правого края. Для этого мы напишем функции
_check_fleet_
edges()
и
_change_fleet_direction()
, а затем изменим
_update_aliens()
. Новые
методы будут располагаться после
_create_alien()
, но я еще раз подчеркну, что
конкретное размещение этих методов в классе несущественно.
Достарыңызбен бөлісу: