3

我有一个小动画,其中圆圈应该在消失并重新出现在其他地方之前增长。有点像池塘上的涟漪,但现在一次只有一个。我正在使用 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

1 回答 1

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 循环的每次迭代绘制一个圆圈。

If you are new to 2D graphics concepts, you may find it useful to read a basic pygame tutorial about moving an image. Good Luck!

于 2013-01-15T18:51:34.097 回答