【问题标题】:Pygame event handling key eventsPygame 事件处理关键事件
【发布时间】:2018-03-17 14:14:48
【问题描述】:

我正在制作游戏并使用 pygame。我的目标是用箭头键移动一个矩形。这如何实现?

【问题讨论】:

标签: python pygame


【解决方案1】:

这个答案部分抄自programarcadegames.com,如果你想用pygame做游戏,你应该看看课程。

[假设你已经有一个主循环,如果没有,从头开始上面提到的课程:] 在主循环之外,为 x 和 y 位置设置 initial 位置和移动速度。

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))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-06
    • 1970-01-01
    • 2014-05-03
    • 1970-01-01
    • 1970-01-01
    • 2014-11-11
    • 2010-10-13
    • 2014-04-23
    相关资源
    最近更新 更多