用python造雪

先上整体代码:

#1
import pygame
import random
pygame.init()

#2
SIZE=(750,1344)
screen=pygame.display.set_mode(SIZE)
pygame.display.set_caption("下雪了")

#加载位图
background=pygame.image.load(r'\Users\WCON\Desktop\snow.jpg')

#3
#定义一个雪花列表
snow=[]

#初始化雪花
for i in range(400):
    x=random.randrange(0,SIZE[0])
    y=random.randrange(0,SIZE[1])
    speed_x=random.randint(-1,2)
    speed_y=random.randint(3,8)
    snow.append([x,y,speed_x,speed_y])

#4
done=False
while not done:
    #消息事件循环,判断退出
    for event in pygame.event.get():
        if event.type==pygame.QUIT:
            done=True
    #绘制位图
    screen.blit(background,(0,0))

#5
    #雪花列表循环
    for i in range(len(snow)):
        #绘制雪花,颜色、位置、大小
        pygame.draw.circle(screen,(255,255,255),snow[i][:2],snow[i][3])

        #移动雪花位置(下一次循环起作用)
        snow[i][0]+=snow[i][2]
        snow[i][1]+=snow[i][3]

        #如果雪花落出屏幕,重设位置
        if snow[i][1]>SIZE[1]:
            snow[i][1]=random.randrange(0,SIZE[1])
            snow[i][0]=random.randrange(0,SIZE[0])

#6
            pygame.display.flip()
            #设置屏幕刷新时间
            clock = pygame.time.Clock()
            time_passed = clock.tick()
            time_passed = clock.tick(20)

pygame.quit()

#1
初始化pygame
#2
设置屏幕的像素大小并加载背景图
#3
建立一个snow空白列表,并用random随机数在[0,400]间随机生成雪花的x,y坐标:
random.randrange
random.randrange([start],stop[, step]):从指定范围内,按指定基数递增的集合中获取一个随机数。
random.randint(a,b):用于生成一个指定范围内的整数。其中参数a是下限,参数b是上限,生成的随机数n:a<=n<=b。
更多random用法参考:https://blog.csdn.net/xc_zhou/article/details/80810179
#4
建立事件,并使用draw绘制位图
更多事件用法参考链接:https://blog.csdn.net/zengxiantao1994/article/details/58049216
#5
设置雪花列表循环,并设置雪花移动,绘制雪花用到的是:
pygame.draw.circle
pygame.draw.circle(Surface, color, pos, radius, width=0): return Rect
用法:用于绘制圆形。第三个参数pos是圆心的位置坐标,radius指定了圆的半径。
width参数表示线条(画笔)的宽度,如果该值设置为0,则表示填充整个图形,我们的绘制的雪花就是使用填充白色。颜色参数通常是一个RGB三元组(R, G, B)。
雪花列表循环主要取决于雪花列表的长度,同样设置了移动雪花的位置,程序中还做了一个判定雪花从顶端向下移动时如果落出屏幕,将会重设位置。
#6
设置屏幕刷新时间和退出机制
clock用法:https://blog.csdn.net/lunzi3775/article/details/78185387?locationNum=8&fps=1

文章参考:https://blog.csdn.net/sinat_34576567/article/details/84895408

猜你喜欢

转载自blog.csdn.net/weixin_43796016/article/details/86158425