2012-02-16 105 views
0

我使用嵌套循环使pygame中的颜色逐渐变化。我的问题是,改变只发生在蓝色。为什么????这里是代码:嵌套for循环不按我想要的方式工作

while True:   
    for a in range(256): 
     for b in range(256): 
      for c in range(256): 
       for event in pygame.event.get(): 
        if event.type == QUIT: 
         pygame.quit() 
         sys.exit() 
       text = basicFont.render('Hello world!', True, (a, b, c), black) 
       textRect = text.get_rect() 
       textRect.centerx = windowSurface.get_rect().centerx 
       textRect.centery = windowSurface.get_rect().centery 
       windowSurface.fill(black) 
       windowSurface.blit(text, textRect) 
       pygame.display.update() 
       mainClock.tick(40) 

for循环仅适用于“A”

+0

你可能会考虑格式化你的代码,以便人们可以阅读它。 – 2012-02-16 01:42:41

+0

也许你混合了制表和空格。这让Python感到困惑。 – Maciek 2012-02-16 07:43:37

+0

有什么办法可以让它正常工作? – 2012-02-16 22:53:51

回答

0

你可以看到在循环过程打印出来的,b和c的值会发生什么:

for a in range(256): 
    for b in range(256): 
     for c in range(256): 
      print(a, b, c) 

这将使c(蓝色)的结果首先出现一个从0到255的变化,然后b增加到1,并且c跳回到0,然后再次增加到255,然后b变成2,并且c去再次从0到255。

我怀疑在杀死它之前,你并没有给节目时间来影响绿色。而且由于它需要65536次重新绘画甚至开始影响红色,这将需要相当长的一段时间。

问题是你实际上瞄准什么样的效果。