Python无法在类中获得2个方法来共享d

2024-04-24 14:12:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在试用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,并保持不变

我试着打印这个值,它确实打印了行走和渲染中的每一帧,这样循环就可以正常工作了,为什么位置得不到更新呢


Tags: selfeventinitdefrender播放器pygamerunning
1条回答
网友
1楼 · 发布于 2024-04-24 14:12:06

在对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,让他更清楚地理解他最初的代码风格

相关问题 更多 >