2013-01-15 85 views
3

我有一個小動畫,圓圈應該在消失和重新出現在其他地方之前增長。有點像池塘上的漣漪,但現在是一次一個。我正在使用pygame庫。爲什麼我的pygame屏幕沒有正確更新?

問題是,屏幕沒有足夠的更新,而不是一個半徑增長的空圓圈,我得到一個變大的圓圈。

有誰知道爲什麼?

import pygame 
import random 

pygame.init() 

black=[0,0,0] 
white=[255,255,255] 

size_x=800 
size_y=600 

size=[size_x,size_y] 
screen=pygame.display.set_mode(size) 
pygame.display.set_caption("Circles") 

point=[] 

x=size_x/2 
y=size_y/2 

clock=pygame.time.Clock() 

done =False 
while done==False: 


    for event in pygame.event.get(): 
     if event.type==pygame.QUIT: 
      done=True 

    screen.fill(black) 

    x+=random.randint(-1,1)*20 
    y+=random.randint(-1,1)*20 

    if x>size_x: 
     x-=size_x 

    if y>size_y: 
     y-=size_y 

    if x<0: 
     x+=size_x 

    if y<0: 
     y+=size_y 

    point=[x,y] 

    c_1=random.randint(0,255) 
    c_2=random.randint(0,255) 
    c_3=random.randint(0,255) 

    color=[c_1,c_2,c_3] 

    for i in range(2,15): 

     radius=i 
     pygame.draw.circle(screen,color,point,radius,1) 

     pygame.display.update() 
     clock.tick(15) 

回答

4

這是因爲您在繪製每個圓圈後沒有清理屏幕,因此它們「堆積」,生成一個實心圓。

內部循環更改爲:

for i in range(2,15): 

    screen.fill(black) 
    radius=i 
    pygame.draw.circle(screen,color,point,radius,1) 

    pygame.display.update() 
    clock.tick(15) 

就能解決問題,對於一個單圈。對於多個圓圈,您需要刪除此最內層的循環,然後爲while循環的每次迭代繪製一個圓圈。

如果您不熟悉2D圖形概念,可能會發現閱讀基本pygame tutorial about moving an image有用。 祝你好運!

相關問題