Quando faço a movimentação do personagem eu separo a speed e o passo para ter mais flexibilidade e aproveitar melhor a orientação a objetos.
Um exemplo seria mais ou menos assim:
# Apenas um exemplo de personagem
class Personagem(Objeto):
def __init__(self):
# Posições iniciais
self.x = 0
self.y = 0
# Valor da velocidade
self.speed = 2
...
# Função que faz andar
def walk(self, direction):
self.x += direction[0] * self.speed
self.y += direction.[1] * self.speed
def level_up(self):
self.speed += 1
...
# Criando o jogador
player = Personagem()
# Definindo as direções para a movimentação
movimento = { UP: (0, -1), DOWN: (0, 1), LEFT: (-1, 0), RIGHT: (1, 0) }
# Andando
player.walk(movimento.DOWN)
É apenas um exemplo, mas dessa forma basta alterar a variavel speed da maneira que quiser. O passo do movimento pode ser alterado também para ser maior do que um pixel por padrão, tudo depende do quanto ele irá se movimentar na situação mais "lenta".