[英]Manage keydown in pygame
我正在開發一個程序,它將顯示數組中的字母。 如果用戶按下向上箭頭,這將在陣列中移動,如果用戶按下向下箭頭。 問題是,當我按這些鍵中的任何一個時,字母移動都非常快,例如,如果我在A中,則程序會移動到D或類似的位置。 這是我的代碼
def HighScore(event):
pygame.init()
nameString=""
nameStringFinal=""
index=0
ABC=["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"]
font=pygame.font.SysFont("Arial",30,True,False)
screen=pygame.display.set_mode((700, 700))
pygame.display.set_caption("New High Score" )
font=pygame.image.load("imagenes/paisaje.jpg").convert()
escape=False
while escape==False:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
screen.blit(fondo,(0,0))
show=fuente.render(nombreString,0,(0,0,0))
if event.type == pygame.KEYDOWN:
if control==True:
if event.key == pygame.K_UP:
if index==25:
index=25
else:
index=index+1
nameString=ABC[index]
elif event.key == pygame.K_DOWN:
if index==0:
index=0
else:
index=index-1
nameString=ABC[index]
elif event.key == pygame.K_RETURN:
nameStringFinal=nameStringFinal+nameString
screen.blit(despliegue,(200,200))
pygame.display.flip()
您需要確保所有事件處理都正確縮進,因此這是for
循環的一部分
您現在擁有的方式,最后的偶數將被反復處理,直到新事件到達
例如:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_UP:
if index==25:
index=25
else:
index=index+1
nameString=ABC[index]
elif event.key == pygame.K_DOWN:
if index==0:
index=0
else:
index=index-1
nameString=ABC[index]
elif event.key == pygame.K_RETURN:
nameStringFinal=nameStringFinal+nameString
screen.blit(fondo,(0,0))
show=fuente.render(nombreString,0,(0,0,0))
screen.blit(despliegue,(200,200))
在外殼程序中,您可以看到如何在空列表上進行for循環,只是將變量保留上一個循環的值
>>> for i in [1,2,3]: # imagine this is the event list
... if i == 4:
... sys,exit()
...
>>> if i == 3:
... print "i==3"
...
i==3
>>> for i in []: # next time round the while loop, the event list is empty
... if i == 4:
... sys,exit()
...
>>> if i == 3: # but you're still processing this event again!
... print "i==3"
...
i==3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.