我發現了一個解決方案,當您按住某個按鍵時,精靈會移動。問題在於它強制編寫難看的重複代碼。我發現的當前解決方案是:pygame - 按住按鈕
for event in pygame.event.get():
if event.type == KEYDOWN:
keystate = pygame.key.get_pressed()
while keystate[K_RIGHT]:
screen.fill((255,255,255))
pygame.event.get()
for sprite in sprites:
rimage = sprite[1].getimage()
if sprite[2] is None:
x+=3
sprite[1].update(time)
screen.blit(rimage, (x,y))
if sprite[1].isfinished() == True:
sprite[1].reset()
last_dir = "right"
if x >= screen_width - rimage.get_width():
x = screen_width - rimage.get_width()
#update player sprite movement
#update player sprite animation
#update rest of game map
keystate = pygame.key.get_pressed()
time = pygame.time.get_ticks()
pygame.display.update()
問題是,while keystate塊。必須對每個方向重複一次,並且遊戲世界需要在每個塊中更新。這是五個地方需要重複相同的代碼.... 4個方向加上,如果沒有按下一個鍵。我可以將它包裝在一個函數中,但我想知道是否有更好的方法來處理在pygame中按住按鈕。
您忘記了重置方向回到(0,0) –
您是絕對正確的,已更新。 – pmoleri
是的,但我認爲keystate是不同的,只是檢測到一個按鍵。我正在檢測按鈕被按下。這就是爲什麼在keystate時有一個循環:按住按鈕的同時記錄方向?我如何知道退出循環?循環是必要的嗎? –