我试着用上下箭头来移动乒乓球的划子。我是通过一个事件处理循环来完成的。以下是事件处理循环的代码:
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的距离。然而,在我的程序中,当我按下或按下时,桨根本不动。谁能告诉我为什么吗?此外,在我按住向上或向下键而不是多次按下来移动它时,是否可以移动拨杆?在
看起来你已经组合了两种检查输入的方法。他们似乎互相矛盾。 让我们来看看:
这称为事件循环,pygame所做的是存储一个包含所有已发生事件的输入队列,get()从队列中弹出值。在
另一种方法是
PG.key.get_pressed()
。在这更像是一种硬件方法,因为它返回一个按钮状态数组。在
为了解决这个问题,我建议删除
get_pressed()
调用和keystate[]检查,并将它们替换为event.key == PG.K_UP
。在编辑:
您的错误似乎是设置的变量自我陶醉的,但使用自校正画画。你应该用自动移动更新,以便移动实际的矩形。在
我是如何让它工作的:
本质上,问题出在update上,因为事件驱动循环识别出我按下了上下键。所以我得到了精灵的矩形物体,并把它的中心移到了垂直轴上。感谢所有评论或回答的人!在
相关问题 更多 >
编程相关推荐