游戏精灵没有更新

2024-09-19 23:36:13 发布

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

我试着用上下箭头来移动乒乓球的划子。我是通过一个事件处理循环来完成的。以下是事件处理循环的代码:

    for event in PE.get():
       if event.type == PG.KEYDOWN:
          keystate = PG.key.get_pressed()
          if event.key == PG.K_ESCAPE:
              done = True
          if keystate[PL.K_UP]:
              rightPaddle.update(-10)
          if keystate[PL.K_DOWN]:
              rightPaddle.update(10)
       if event.type == PG.QUIT:
          done = True

更新功能如下:

^{pr2}$

这里是桨精灵课程:

^{3}$

简单地说,桨叶(本质上是一个矩形)的update函数根据上下箭头的单击次数将矩形的左上角移动到新的y位置。每个向上或向下箭头向正或负方向增加拨杆10的距离。然而,在我的程序中,当我按下或按下时,桨根本不动。谁能告诉我为什么吗?此外,在我按住向上或向下键而不是多次按下来移动它时,是否可以移动拨杆?在


Tags: keyeventtruegetiftypeupdate箭头
2条回答

看起来你已经组合了两种检查输入的方法。他们似乎互相矛盾。 让我们来看看:

for event in PE.get():

这称为事件循环,pygame所做的是存储一个包含所有已发生事件的输入队列,get()从队列中弹出值。在

另一种方法是PG.key.get_pressed()。在

这更像是一种硬件方法,因为它返回一个按钮状态数组。在

为了解决这个问题,我建议删除get_pressed()调用和keystate[]检查,并将它们替换为event.key == PG.K_UP。在

编辑:

您的错误似乎是设置的变量自我陶醉的,但使用自校正画画。你应该用自动移动更新,以便移动实际的矩形。在

我是如何让它工作的:

   def update(self, move):
       self.rect.centerx += 0
       self.rect.centery += move

本质上,问题出在update上,因为事件驱动循环识别出我按下了上下键。所以我得到了精灵的矩形物体,并把它的中心移到了垂直轴上。感谢所有评论或回答的人!在

相关问题 更多 >