【发布时间】:2012-06-25 17:27:14
【问题描述】:
我正在使用 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 循环更新对象列表中的所有元素?我已经尝试了很多天,但我无法找到一个好的解决方案。任何想法表示赞赏。谢谢
【问题讨论】:
-
你的代码缩进是否正确?看起来你的 while 循环永远不会终止,因为你没有休息。
-
是的。代码运行良好,一切正常。唯一的问题是更新列表中每个对象的 draw_circle() ......这样绘制的圆圈是可见的
-
当 event.type == QUIT 时循环结束
-
但是当
event.type==QUIT你调用sys.exit时,看起来这将结束整个程序,而不仅仅是循环。 -
我需要循环来制作多个圆圈(用户想要多少就多少)。这就是问题所在。如何使用不同的变量绘制多个圆圈,因为在循环期间屏幕一直在闪烁
标签: python list dynamic pygame draw