256
Глава 12 • Инопланетное вторжение
❸
self.x += self.settings.ship_speed
if self.moving_left:
self.x -= self.settings.ship_speed
# Обновление атрибута rect на основании self.x.
❹
self.rect.x = self.x
def blitme(self):
...
В точке
в
Ship
создается атрибут
settings
, чтобы он мог использоваться
в
update()
. Так как позиция корабля изменяется с нецелым приращением пикселов,
ее следует присвоить переменной, способной хранить дробные значения. Формаль-
но атрибутам
rect
можно присвоить дробные значения, но
rect
сохранит только
целую часть этого значения. Для точного хранения позиции корабля определяется
новый атрибут
self.x
, способный хранить дробные значения
. Функция
float()
используется для преобразования значения
self.rect.x
в вещественный формат
и сохранения
этого значения в
self.x
.
После изменения позиции корабля в
update()
значение
self.x
изменяется на
величину, хранящуюся в
settings.ship_speed
. После обновления
self.x
новое
значение используется для обновления атрибута
self.rect.x
, управляющего по-
зицией корабля
. В
self.rect.x
будет сохранена только целая часть
self.x
, но
для отображения корабля этого достаточно.
Теперь можно изменить значение
ship_speed
; при любом значении, большем 1,
корабль начинает двигаться быстрее. Эта возможность ускорит реакцию корабля
на действия игрока, а также позволит нам изменить темп игры с течением времени.
Достарыңызбен бөлісу: