2017-02-05 16 views
0

pygameを使用して、Pythonのforループから抜け出す問題が発生しています。具体的には、鍵のリリース時にループから脱出しようとしています。たとえば、キー "W"が押されているときは、コードを実行する必要がありますが、すぐに "W"を放すとループが途切れます。pygameイベントを使用してPython forループを中断する

私はpygame.key.get_pressed()if event.type == KEYUP:を使用しようとしましたが、正しくできないようです。誰も助けることができますか?

while 1: 
    for event in pygame.event.get(): 
    if event.type == pygame.QUIT: 
     doQuitStuff() 
    elif event.type == pygame.MOUSEBUTTONDOWN: 
     doMouseButtonStuff() 
    elif event.type == KEYDOWN: 
     if event.key == pygame.K_p: 
     doPStuff() 
     elif event.key == pygame.K_e: 
     doEStuff() 
     elif event.key in foo: 
     doFooStuff() 
     for i in xrange(100): 
      doThisStuffOnlyIfKeyInFooIsHeldDown() #This for loop finishes 
               #execution even if I release the 
               #key in "foo"  
+0

あなたは 'for'ループなしで行う必要がありますが、' if do_again: 'と' main 'while'はループとして動作します。 – furas

答えて

1

あなたはforループせずに行う必要がある - とwhile Trueはループとして行います。

run_loop = False 
i = 0 

while True: 

    # - events - 

    for event in pygame.event.get(): 

     if event.type == KEYDOWN: 
      if event.key == pygame.K_w: 
       # start loop 
       run_loop = True 
       i = 0 

     elif event.type == KEYUP: 
      if event.key == pygame.K_w: 
       # stop loop 
       run_loop = False 

    # - updates - 

    if run_loop and i < 100: 
     i += 1 
     doThisStuffOnlyIfKeyInFooIsHeldDown() 

    # - draws - 
+0

ありがとうございました - あなたはもう一度私を助けました! – zzoop

関連する問題