[英]Pygame event handling key events
我正在制作游戏并使用 pygame。 我的目标是用箭头键移动一个矩形。 如何做到这一点?
这个答案部分复制自programarcadegames.com ,如果你想用 pygame 制作游戏,你应该看看课程。
[假设你已经有一个主循环,如果没有,从头开始上面提到的课程:] 在主循环之外,设置 x 和 y 位置的初始位置和移动速度。
x_speed = 0
y_speed = 0
x_pos = 10
y_pos = 10
现在您需要(或者更确切地说,应该已经拥有)主循环内的事件循环来处理可能发生的所有 pygame 事件。 请注意,这应该是主循环中发生的第一件事。
在事件循环中,检查 KEYDOWN 事件(击键)和 KEYUP 事件(keyrelease)。
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
# As long as an arrow key is held down, the respective speed is set to 3 (or minus 3)
if event.key == pygame.K_LEFT:
x_speed = -3
elif event.key == pygame.K_RIGHT:
x_speed = 3
elif event.key == pygame.K_UP:
y_speed = -3
elif event.key == pygame.K_DOWN:
y_speed = 3
elif event.type == pygame.KEYUP:
# As soon as an arrow key is released, reset the respective speed to 0
if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
x_speed = 0
elif event.key == pygame.K_UP or event.key == pygame.K_DOWN:
y_speed = 0
现在调整将速度添加到您的位置。 如果没有按住箭头键,则事件循环中的速度设置为 0,因此您的位置不会受到影响。 然后用您刚刚修改的位置绘制矩形。
x_pos = x_pos + x_speed
y_pos = y_pos + y_speed
pygame.draw.rect(yourdisplay, yourcolor, (x_pos, y_pos, yourwidth, yourheight))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.