我在我的程序中遇到了一些鍵盤事件的麻煩。長話短說我使用pygame.KEYDOWN事件,但幾乎每個人都聽說get_pressed()是一個更好的選擇。因此,我改變了我的代碼,但遇到了一些問題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
我認爲這個問題可能是因爲你在所有事情之後都有elifs,所以它說:如果上或下,然後忽略左或右。它可能應該是如果up:moveup elif down:movingown else:setverticalmovementto0如果離開:moveleft elif right:moveright else:sethorizontalmovementto0,以便區分水平和垂直移動。 (哎呀,剛剛看到pygamenerd說,首先,我的壞) – Chachmu