Как уже упоминалось, вы не меняете значение self.move
в своем новом коде. Я предполагаю, что причина, по которой вы изменили эту функцию, заключалась в том, что вы могли повторно использовать эту функцию для значений, отличных от self.move
.
Если вы хотите иметь возможность передавать различные аргументы в вашу функцию и изменять их, вы можете передать измененное значение speed_x
в качестве возвращаемого значения:
def walk(self, speed_x):
"""move across screen"""
displacement = self.rect.move((speed_x, 0))
if self.rect.left < self.area.left or self.rect.right > self.area.right:
speed_x = -speed_x
displacement = self.rect.move((speed_x, 0))
self.rect = displacement
return speed_x
И вызовите такую функцию как:
def update(self):
self.move = self.walk(self.move)
Примечание: В этом ответе предполагается, что self.move
не всегда следует обновлять при вызове walk
. Если это предположение неверно и self.move
должен фактически обновляться каждый раз, когда запускается walk
, вам следует вместо этого использовать ответ Ксавье Хо.