先上整体代码:
#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