gpt4 book ai didi

python - 为什么我的 pygame 屏幕没有正确更新?

转载 作者:太空宇宙 更新时间:2023-11-03 15:21:21 25 4
gpt4 key购买 nike

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

最佳答案

这是因为您在绘制每个圆圈后没有清除屏幕,所以它们“堆积”,生成了一个实心圆圈。

将最内层循环更改为:

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 .祝你好运!

关于python - 为什么我的 pygame 屏幕没有正确更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14344634/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com