Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用pygame事件打破python for循环_Python_For Loop_Event Handling_Pygame - Fatal编程技术网

使用pygame事件打破python for循环

使用pygame事件打破python for循环,python,for-loop,event-handling,pygame,Python,For Loop,Event Handling,Pygame,我在python中遇到了一个问题,使用pygame打破了for循环。具体来说,我试图在释放密钥时打破循环。例如,当按下键“W”时,代码应该执行,但当释放“W”时,代码立即中断循环 我曾尝试使用pygame.key.get_pressed()和if event.type==KEYUP:,但我似乎无法正确使用它。有人能帮忙吗 while 1: for event in pygame.event.get(): if event.type == pygame.QUIT:

我在python中遇到了一个问题,使用pygame打破了for循环。具体来说,我试图在释放密钥时打破循环。例如,当按下键“W”时,代码应该执行,但当释放“W”时,代码立即中断循环

我曾尝试使用
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"      

您必须不使用
for
循环,而
为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 -
run\u loop=False
i=0
尽管如此:
#-事件-
对于pygame.event.get()中的事件:
如果event.type==KEYDOWN:
如果event.key==pygame.K_w:
#起动回路
运行循环=真
i=0
elif event.type==KEYUP:
如果event.key==pygame.K_w:
#停止循环
运行循环=错误
#-更新-
如果运行_循环且i<100:
i+=1
DothisStuffOnlyFkeyInfooishelddown()
#-抽签-

对于循环,您必须不使用
,但如果再次执行:
和main
,而
将用作循环。谢谢-您再次帮助了我!