Python-无法在类中获取2个方法来共享数据
我正在尝试python/pygame 我制作了一个简单的播放器类Python-无法在类中获取2个方法来共享数据,python,pygame,Python,Pygame,我正在尝试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 渲染功能: d
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,并保持不变
我尝试打印值,但它确实打印了漫游和渲染中的每一帧,因此循环工作正常,那么为什么位置没有得到更新?您在每次调用
渲染时都在创建实例
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在现已删除的帖子中指出的,render方法是完全不需要的。我把它留给了OP,让他更清楚地了解自己的原始代码风格。在每次调用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在现已删除的帖子中指出的,render方法是完全不需要的。我留下它是为了让OP更清楚地了解他的原始代码风格。我看不到循环。嗯,是的,我留下了它,因为它对我来说似乎不相关。但是我现在添加了它,你可以在每次迭代中创建一个新的播放器。从而重置坐标。你需要在render
函数之外创建播放器。render方法每次从一开始就重新创建播放器的实例。我看不到循环。嗯,是的,我忽略了它,因为它似乎与我无关。但是我现在添加了它,你可以在每次迭代中创建一个新的播放器。从而重置坐标。你需要在render
函数之外创建播放器。render方法每次从头开始都会重新创建播放器的实例是的,我删除了我的,因为你的速度快了一点,我的帖子没有添加太多内容。好吧,你第三十二秒的额外思考让我在我的示例帖子中发现了一个bug,并明确表示不需要这种方法。无论如何,谢谢你分享你的帖子。是的,我删除了我的帖子,因为你的速度快了一点,我的帖子没有添加太多。好吧,你的第三十二个额外思考让我在我的示例帖子中发现了一个bug,并明确表示不需要该方法。谢谢分享你的帖子。