当前位置: 首页 > 后端技术 > Python

2021年,用Python送你今年的第一场雪

时间:2023-03-26 15:52:46 Python

2021年就要结束了。北方的第一场雪下的很早,而南方几乎没有下过,所以今天分享一下,如何用python制作今年的第一场雪,这里我是用pygame实现的,Python版是3.8。下面介绍实现方法。首先,执行以下命令安装pygamepipinstallpygame然后创建一个Python源文件,编写如下代码做一些初始化工作importsysimportrandomimportpygamepygame.init()clock=pygame.time.Clock()bg_size=width,height=1200,750screen=pygame.display.set_mode(bg_size)bg=pygame.image.load('bg.jpg')clock后面会用来设置帧率,bg_size是应用窗口大小(宽高),screen是创建的屏幕(应用程序窗口),可以向其中添加元素。bg是用作窗口背景图像的加载图像。要制作雪花效果,实际上有两个步骤。第一步是定义雪花,第二步是让雪花动起来。1.定义雪花雪花的定义比较简单,我们用大小圆圈代替即可。定义一个圆需要一个圆心和一个半径,这一步我们还要定义移动距离。写一个函数,批量生成圆defget_snows_circle(pic_num):"""生成一个数组,返回一些雪花,包括雪花在屏幕上的位置,半径,运动的x、y坐标:parampic_num:初始化了多少雪花:return:包含雪花属性的数组"""snows=[]foriinrange(pic_num):x_pos=random.randint(0,width)#雪花在屏幕上的x坐标y_pos=random.randint(0,height)#雪花在屏幕上的y坐标radius=random.randint(2,4)#雪花的半径x_delta=random.randint(-1,1)#距离雪花向x轴方向移动的距离y_delta=random.randint(4,6)#雪花向y轴方向移动的距离snows.append([[x_pos,y_pos],[x_delta,y_delta],radius])返回snows2。让雪花动起来的思路比较简单。当雪花第一次出现在屏幕后,我们根据x_delta和y_delta调整雪花的中心,然后刷新屏幕,这时候雪花会移动到一个新的位置,然后我们移动中心圆圈内,雪花可以继续移动,重复这个步骤,就可以实现下面的雪花效果。上面的过程可以用一个for循环来完成。snow_pics=get_snows_circle(250)whileTrue:foreventinpygame.event.get():#监听是否有退出事件,固定写法ifevent.type==pygame.QUIT:sys.exit()screen.blit(bg,(0,0))#为snow_pics中的snow_info设置背景图片:pos=snow_info[0]pos_delta=snow_info[1]pygame.draw.circle(screen,(255,255,255),pos,snow_inf)#在屏幕上画雪花#screen.blit(snow_info[2],pos)#沿x轴和y轴方向移动pos[0]+=pos_delta[0]pos[1]+=pos_delta[1]ifpos[1]>height:#超过屏幕高度,重新设置起始位置pos[0]=random.randint(0,width)pos[1]=random.randint(-50,-30)#y坐标设置负初始雪花会在屏幕外pygame.display.flip()#刷新屏幕clock.tick(30)#每秒不超过30帧,雪花落地会更平滑调用get_snows_circle(250)生成250雪花,后面跟着一个while循环用于刷新屏幕。对于snow_pics中的snow_info:代码是我们开始的代码,显示250个雪花,然后调整它们的中心。其他代码都有注释,这里不再赘述。3.添加音乐有点不同。pygame中添加音乐的方式也很简单。只需执行以下两行代码。pygame.mixer.music.load('snow_down.mp3')#播放音乐,雪花飘落我用的声音pygame.mixer.music.play()是《雪落下的声音》的伴奏版,非常好听。4.在另一个版本中,除了圆圈,还可以使用现成的图标来实现雪花。比如我用它来实现第一个版本。效果如下。个人觉得圆形更好看,虽然图标比圆形好看,但是过于方正反而显得整个画面很死板。这个因人而异,也可以把背景图换成甜美的照片来一段程序员式的浪漫。另外,提醒大家天冷注意保暖,尤其是骑车上下班的朋友要注意安全。源文件已经整理好了,回复关键词snow就可以了。如果本文对您有用,请点赞鼓励。