我对Python和pygame有一个问题:我不知道如何使一个简单的桨左右移动。基本上,我正在为我的第一个项目的乒乓球类型的游戏。
在网上读了几篇文章后,我想了一个办法来做这件事。我目前掌握的代码是:
PADDLE_WIDTH = 50
PADDLE_HEIGHT = 10
paddleSpeedX = 0
p1Paddle = pygame.Rect(10, 430, PADDLE_WIDTH, PADDLE_HEIGHT)
PADDLE_COLOR = pygame.color.Color("red")
while True:
for event in pygame.event.get():
if event.type == KEYDOWN:
if event.key == K_LEFT:
p1Paddle.right = p1Paddle.left + paddleSpeedX - 10
if event.key == K_RIGHT:
p1Paddle.left = p1Paddle.left + paddleSpeedX + 10
if event.type == QUIT:
pygame.quit()
sys.exit()
pygame.display.update()
pygame.display.update()
输入此代码后,游戏运行,但我仍然无法左右移动桨。 我该怎么做?
我已经做了一些补充和修改,使您的代码工作。 在每一帧(循环的迭代)中,你必须擦除屏幕并重新绘制桨。这是为了确保在按下左/右箭头时用新的坐标重新绘制桨叶。 注意,当按left时,我将p1 paddle.left改为p1 paddle.right。
下面是一个更优雅的解决方案
注意,我使用
pygame.key.get_pressed()
检查按键。它允许我们在检查键状态时平滑地移动,而不必等待事件发生。 我添加了一个时钟对象来将帧速率限制为50 FPS(每秒帧数)。请尝试两种方法。
Pygame只在您第一次按下键时引发一次
KEYDOWN
事件。不幸的是,它不会继续引发一个
KEYDOWN
事件,所以发生的情况是,你的划桨只会猛地划过一次,并且不会再移动,除非你继续向左右键发送垃圾邮件。相反,当你收到一个
KEYDOWN
事件时,你可以设置一个速度,当你收到KEYUP
事件时,设置它为零,如下所示:(我还更改了一些变量名,因为我不知道
p1Paddle.left
和p1Paddle.right
是什么——希望您不介意)。相关问题 更多 >
编程相关推荐