pygame - 关键输入在 if not 语法中不起作用

pygame - Key inputs not working in if not syntax

所以最近我一直在与 pygame 合作一个项目,我开始着手制作你可以控制的角色。玩家可以使用箭头键移动,但在没有按下任何键时无法停止。我的解决方案是 pygame 来测试用户是否没有按左、右、上或下,然后玩家速度将变为零。但是由于某种原因,当我没有并且按下按键时,播放器速度仍然不会停止。我想知道我的 if 语句有什么问题。感谢您阅读本文并提供帮助!

if语句代码是这样的:

            if event.key != K_LEFT and event.key != K_RIGHT and event.key != K_DOWN and event.key != K_UP:
                playerSpeed = 0

这是运动的完整代码:

            #Keypress-player movement  

        elif event.type == KEYDOWN:
            if event.key != K_LEFT and event.key != K_RIGHT and event.key != K_DOWN and event.key != K_UP:
                playerSpeed = 0
            if event.key == K_LEFT:
                direction = LEFT
                playerSpeed = .2
            elif event.key == K_RIGHT:
                direction = RIGHT
                playerSpeed = .2
            elif event.key == K_DOWN:
                direction = DOWN
                playerSpeed = .2
            elif event.key == K_UP:
                playerSpeed = .2
                direction = UP

    if direction == UP:
        if canMoveUp == 'true':
            newPlayer = {'x':coords[0]['x'], 'y':coords[0]['y']-playerSpeed}
    elif direction == DOWN:
        if canMoveDown == 'true':
            newPlayer = {'x':coords[0]['x'], 'y':coords[0]['y']+playerSpeed}
    elif direction == LEFT:
        if canMoveLeft == 'true':
            newPlayer = {'x':coords[0]['x']-playerSpeed, 'y':coords[0]['y']}
    elif direction == RIGHT:
        if canMoveRight == 'true':
            newPlayer = {'x':coords[0]['x']+playerSpeed, 'y':coords[0]['y']}

您需要彻底重新考虑您的方法。有两种按键输入的好方法。

1) 每个键都有一个标志,在 KEYDOWN 上设置它,在 KEYUP 上取消设置。

2) 使用 Pygame 提供的当前按键字典。

然后你可以说 "if keys["UP"]:"。这使您可以一次使用多个键,并使逻辑更简单。