我的程序中的键盘事件有些麻烦。长话短说我正在使用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
答案 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
让我知道它是否有效。