Python和Pygame:在迭代过程中循环下更新列表中的所有元素


问题内容

我正在使用Python开发程序并使用Pygame。基本代码如下所示:

while 1:

   screen.blit(background, (0,0))
   for event in pygame.event.get():

      if event.type == QUIT:
        pygame.quit()
        sys.exit()

      if event.type == KEYDOWN and event.key == K_c:
        circle_create = True
        circle_list.append(Circle())

      if event.type == MOUSEBUTTONDOWN and circle_create == True:
        if clicks == 0:
            circle_list[i].center()
        clicks += 1


      if event.type == MOUSEMOTION and clicks == 1 and circle_create == True:
        circle_list[i].stretch()

   if circle_create == True:
     circle_list[i].draw_circle()

   if clicks == 2:
     clicks = 0
     i += 1
     circle_create = False

 pygame.display.update()

我想做的是让对象的draw_circle()函数由循环不断更新,以便为列表中的所有对象显示绘制的圆,但是由于列表是迭代的,因此它更新了添加的新对象和对象已经附加的文件不会更新。

该程序可以运行,它可以根据用户输入画圈,但是更新问题是我需要解决的唯一问题。是否有可能通过while循环更新对象列表中的所有元素?我已经尝试了很多天,但我一直找不到一个好的解决方案。任何想法表示赞赏。谢谢


问题答案:

编辑:我以为你已经尝试过:https :
//stackoverflow.com/a/11172885/341744

该程序可以运行,它可以根据用户输入画圈,但是更新问题是我需要解决的唯一问题。是否有可能通过while循环更新对象列表中的所有元素?

例如,如果您在迭代时杀死演员,则可以在临时列表上进行迭代。

for circle in circles[:]:
    circle.update()