首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用pygame事件突破python for循环

使用pygame事件突破python for循环
EN

Stack Overflow用户
提问于 2017-02-05 02:18:30
回答 1查看 409关注 0票数 0

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

我尝试过使用pygame.key.get_pressed()if event.type == KEYUP:,但是我似乎无法正确地理解它。有人能帮忙吗?

代码语言:javascript
复制
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"      
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-05 02:29:30

您必须不使用for循环,而while True将作为循环处理。

代码语言:javascript
复制
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 -
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42047904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档