无法弄清楚如何限制我的python游戏中可以按下多少键

时间:2015-04-25 17:05:18

标签: python pygame

我在pygame和python中制作一个游戏,我的移动代码设置为yp像这样

if (pygame.key.get_pressed() [pygame.K_a] != 0):
    moving = True
    xPos_change = -3
    xPos += xPos_change
if (pygame.key.get_pressed() [pygame.K_d] != 0):
    moving = True
    xPos_change = 3
    xPos += xPos_change

然后,当布尔移动=真时,它播放动画我不想同时按两个同时使你的角色停止,如果你按两个。例如,如果我向左移动,我然后按a向右移动,而我按下然后d覆盖它并移动到右eben如果我持有一个因为d是最后一个按键。基本上我想要最后一个按下的键来覆盖最后按下的键。但是我该怎么做?

P.S我希望我的问题很清楚,我有一个不能正确陈述我的问题并且我得到很多反弹的倾向

1 个答案:

答案 0 :(得分:0)

普通解决方案只是使用elif代替if进行第二次测试,但是a键始终优先于d键,而不是{理想的任何一个。

更好的解决方案是将输入处理与物理模拟进一步分离。因此,您不必直接对密钥进行xPos更改,而是首先处理所有输入以确定用户按下的方向,然后将该方向应用于操作:

# process input
direction = 0
if (pygame.key.get_pressed() [pygame.K_a] != 0):
    direction -= 1
if (pygame.key.get_pressed() [pygame.K_d] != 0):
    direction += 1

# process physics
if direction == -1:
    moving = True
    xPos_change = -3
    xPos += xPos_change
elif direction == 1:
    moving = True
    xPos_change = 3
    xPos += xPos_change

如果用户现在按下两个键,则他们互相取消,direction为0。