Get_Pressed行为奇怪

时间:2013-06-03 11:01:46

标签: python pygame

我的程序中的键盘事件有些麻烦。长话短说我正在使用pygame.KEYDOWN事件,但后来几乎每个人都听说get_pressed()是一个更合适的选择。我相应地更改了我的代码,但遇到了一些问题

首先:

如果我拿着两把钥匙然后只释放一把,pygame因某种原因认为我已经释放了两把钥匙。这意味着对角线的移动很难实现

其次:

对角线运动是有效的,但仅在某些情况下:

我正在向上和向下移动并向左或向右移动

如果我向左或向右并向上或向下按

,它(由于某种原因)不起作用

以下是我一直在使用的代码:

while done == False:
for event in pygame.event.get():
    if event.type == pygame.QUIT:
        done = True
keys = pygame.key.get_pressed()
if (keys[K_KP6]):
    square.spd_x+=5
    if square.spd_x > 5: # Put these speed limits in a function
        square.spd_x = 5
elif (keys[K_KP4]):
    square.spd_x -=5
    if square.spd_x <-5:
        square.spd_x = -5
elif (keys[K_KP8]):
    square.spd_y -=5
    if square.spd_y <-5:
        square.spd_y = -5
elif (keys[K_KP2]):
    square.spd_y +=5
    if square.spd_y >5:
        square.spd_y = 5
else:
    square.spd_x = 0
    square.spd_y = 0

如果有人能说清楚这个问题,我将非常感激,非常感谢你试图回答

谢谢:D

1 个答案:

答案 0 :(得分:1)

我不知道这是否有效,但值得一试。

while done == False:
for event in pygame.event.get():
    if event.type == pygame.QUIT:
        done = True
keys = pygame.key.get_pressed()
if (keys[K_KP6]):
    square.spd_x=5
else:
    square.spd_x=0
if (keys[K_KP4]):
    square.spd_x-=5
if (keys[K_KP8]):
    square.spd_y=-5
else:
    square.spd_y=0
if (keys[K_KP2]):
    square.spd_y +=5

让我知道它是否有效。