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"]:"。这使您可以一次使用多个键,并使逻辑更简单。
所以最近我一直在与 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"]:"。这使您可以一次使用多个键,并使逻辑更简单。