我正在尝试使用 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 并保持在那里。
我尝试打印该值,它确实打印了行走和渲染的每一帧,因此循环正常工作,那么为什么位置没有得到更新?
请您参考如下方法:
您在每次调用 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,让他的原始代码风格更加清晰。
