3

円が消えて別の場所に再び現れる前に、円が成長する小さなアニメーションがあります。池の波紋のようなものですが、今のところ一度に 1 つずつです。私は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ループの反復ごとに1つの円を描画する必要があります。

2Dグラフィックスの概念に慣れていない場合は、画像の移動に関する基本的なpygameチュートリアルを読むと役立つ場合があります。幸運を!

于 2013-01-15T18:51:34.097 に答える