1

我的程序中的键盘事件有一些问题。长话短说,我正在使用 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

4

1 回答 1

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

让我知道它是否有效。

于 2013-06-04T01:23:19.237 回答