我正在尝试使用python/pygame.
我做了一个简单的球员课.
class Player(): def __init__(self): self.posx = 10 self.posy = 20 def render (self): pygame.draw.rect(screen,(255,0,0), (self.posx,self.posy,100,100)) def walk (self): self.posx += 10
渲染功能:
def render(): player = Player() player.walk() player.render()
循环:
running = True while running: render() for event in pygame.event.get(): if event.type == pygame.QUIT: running = False
我假设这段代码每帧都会向x位置添加10个像素.但相反,它会在第一次渲染时将位置更新为20并保持在那里.
我尝试打印该值并且它确实打印了walk和渲染的每一帧,所以循环工作正常,那么为什么这个位置不会得到更新?
您正在每次调用时重新创建实例render
.
player = Player() def render(player): player.walk()
这应该更好:
running = True player = Player() while running: render(player) for event in pygame.event.get(): if event.type == pygame.QUIT: running = False
作为timgeb,在现在删除的帖子中指出,方法渲染是非常不需要的.我把它留给了OP,以便用他原来的代码风格更加清晰.