这几天很多地方陆续出现了降雪的天气,对于年内的第一场雪,大家的热情显然是比较高涨的,比如很多人顶着雪花到各种景点打卡,再比如一位东北大哥要直播卖雪送辣白菜给南方人。

此事还上了微博热搜,博主唐僧评论:“对卖家来说是买辣白菜送雪,对南方人来说是买雪送辣白菜”,网友 melodyming2 回复:“圣僧我悟了”,大家如果有兴趣的话,可以到网上看一下详细报道,这里就不多说了。

回到正题,本文我们使用 Python 来实现带音乐的雪花飘落雪景图,功能实现用到的 Python 库为 pygame,之前已经多次介绍了,相信大家应该都比较熟悉了。

实现

雪景图的实现还是比较简单的,基本思路如下:

  • 找一张自己喜欢的图片作为背景图
  • 添加雪飞飘落效果
  • 添加音乐效果

首先,我们来生成主窗口及设置背景图,代码实现如下:

bg_img = "bg.jpeg"
bg_size = (900, 500)
screen = pygame.display.set_mode(bg_size)
pygame.display.set_caption("雪景图")
bg = pygame.image.load(bg_img)

窗口的宽、高根据背景的尺寸来设置。

接着我们来实现雪花飘落效果,先来定义一个雪花列表,代码实现如下:

snow_list = []
for i in range(150):x_site = random.randrange(0, bg_size[0])   # 雪花圆心位置y_site = random.randrange(0, bg_size[1])   # 雪花圆心位置X_shift = random.randint(-1, 1)         # x 轴偏移量radius = random.randint(4, 6)           # 半径和 y 周下降量snow_list.append([x_site, y_site, X_shift, radius])

再来实现雪花位置更新,实现动态下雪的效果,代码实现如下:

for i in range(len(snow_list)):# 绘制雪花,颜色、位置、大小pygame.draw.circle(screen, (255, 255, 255), snow_list[i][:2], snow_list[i][3] - 3)# 移动雪花位置(下一次循环起效)snow_list[i][0] += snow_list[i][2]snow_list[i][1] += snow_list[i][3]# 如果雪花落出屏幕,重设位置if snow_list[i][1] > bg_size[1]:snow_list[i][1] = random.randrange(-50, -10)snow_list[i][0] = random.randrange(0, bg_size[0])

因为我们要实现的是雪花不断飘落的效果,因此再来设置一个循环来不断刷新屏幕,代码实现如下:

while not done:# 消息事件循环,判断退出for event in pygame.event.get():if event.type == pygame.QUIT:done = Truescreen.blit(bg, (0, 0))# 雪花列表循环for i in range(len(snow_list)):# 绘制雪花,颜色、位置、大小pygame.draw.circle(screen, (255, 255, 255), snow_list[i][:2], snow_list[i][3] - 3)# 移动雪花位置(下一次循环起效)snow_list[i][0] += snow_list[i][2]snow_list[i][1] += snow_list[i][3]# 如果雪花落出屏幕,重设位置if snow_list[i][1] > bg_size[1]:snow_list[i][1] = random.randrange(-50, -10)snow_list[i][0] = random.randrange(0, bg_size[0])# 刷新屏幕pygame.display.flip()clock.tick(20)

最后,我们再来为雪景图添加一段音乐效果,代码实现如下:

track = pygame.mixer.music.load('my.mp3')  # 加载音乐文件
pygame.mixer.music.play() # 播放音乐流
pygame.mixer.music.fadeout(100000)  # 设置音乐结束时间

到此我们就完成了雪景图的绘制工作了,下面一起来欣赏一下 GIF 效果:

大家如果想看(听)带音乐的雪景图,可以自己运行程序感受一下,这里就不给大家录视频了。

总结

本文我们给大家介绍了用 Python 制作带音乐的雪花飘落雪景图的一种实现方式,大家如果感兴趣的话,可以自己动手试一下。

在这里还是要推荐下我自己建的Python开发学习群:1156465813,群里都是学Python开发的,如果你正在学习Python ,欢迎你加入,大家都是软件开发党,不定期分享干货(只有Python软件开发相关的),包括我自己整理的一份2020最新的Python进阶资料和高级开发教程,欢迎进阶中和进想深入Python的小伙伴!

用 Python 实现带音乐的雪花飘落雪景图相关推荐

  1. 一张图片能加特效,还能加背景音乐?Python制作雪景图

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章来源于Python技术 ,作者派森酱 前言 这几天很多地方陆续出现了降雪的天气,对于年内的 ...

  2. python给图片加动态特效_一张图片能加动画特效,还能加背景音乐?Python制作雪景图...

    文中的文本及图片来自互联网,仅作学习培训.沟通交流应用,不具备一切商业行为,如有什么问题请立即在线留言以作解决. 下列文章内容来自Python技术性 ,创作者派森酱 序言 近几天许多 地区相继出現了下 ...

  3. python画雪景_来自程序员的圣诞节浪漫-用Python画一棵带音乐的雪夜圣诞树

    本文我们用 Python 来画一棵带音乐效果的雪夜圣诞树,基本思路如下: 用 Python 画一棵圣诞树作为背景图 在圣诞树背景图中添加雪落效果及音乐 下面来看一下具体实现. 首先,我们来画一棵圣诞树 ...

  4. python画雪_用Python画一棵带音乐的雪夜圣诞树

    本文我们用 Python 来画一棵带音乐效果的雪夜圣诞树,基本思路如下:用 Python 画一棵圣诞树作为背景图 在圣诞树背景图中添加雪落效果及音乐 下面来看一下具体实现. 首先,我们来画一棵圣诞树, ...

  5. 【Python教你一招】画一棵带音乐的雪夜圣诞树 | 附源代码

    源码在Python学习交流群:733089476 获取 本文我们用 Python 来画一棵带音乐效果的雪夜圣诞树,基本思路如下: 1.用 Python 画一棵圣诞树作为背景图 2.在圣诞树背景图中添加 ...

  6. 来自程序员的圣诞节浪漫-用Python画一棵带音乐的雪夜圣诞树

    本文我们用 Python 来画一棵带音乐效果的雪夜圣诞树,基本思路如下: 用 Python 画一棵圣诞树作为背景图 在圣诞树背景图中添加雪落效果及音乐 下面来看一下具体实现. 首先,我们来画一棵圣诞树 ...

  7. 用python画雪花飘落_python实现雪花飘落效果实例讲解

    在学习pygame模块过程中,我们可以通过使用 pygame模块实现很多功能性的东西,但是很多人应该没有利用pygame实现过雪花飘落的效果吧,有时候可能是不知道从何入手或者是没有时间写,接下来我就教 ...

  8. python实现雪花飘落效果_python实现雪花飘落效果实例讲解及源码分享!

    点击蓝字"python教程"关注我们哟! 前言 Python现在非常火,语法简单而且功能强大,很多同学都想学Python!所以小的给各位看官们准备了高价值Python学习视频教程及 ...

  9. python实现雪花动态图_python实现雪花飘落效果

    在学习pygame模块过程中,我们可以通过使用 pygame模块实现很多功能性的东西,但是很多人应该没有利用pygame实现过雪花飘落的效果吧,有时候可能是不知道从何入手或者是没有时间写,接下来我就教 ...

最新文章

  1. ryu的防火墙功能 ryu.app.rest_firewall,配合mininet和open vswitch(OVS)
  2. python3 列表倒叙_python的列表、元组、字典、集合
  3. Windows上搭建Python安装包MySQLdb
  4. BAT 批处理脚本教程
  5. [PAT乙级]1017 A除以B
  6. MySQL对于表中数据的增删改查
  7. docker(7):使用python 连接数据库,插入并查询数据--link
  8. 学习Bloom Filter,处理“海量”数据
  9. sqlyog注册码激活
  10. 树莓派通过网络共享USB设备
  11. 协同过滤推荐算法java_基于用户的协同过滤推荐算法 实现原理及实现代码
  12. 推荐一款调试工具:深蓝串口调试工具 2021秋季版(2.16.1.),一直使用这个,最近更新好快。
  13. rvm、Ruby安装(亲测有效)
  14. 超强文本编辑器SciTE配置方法详细实例
  15. Adobe Premiere基础-介绍,配置,快捷键,创建项目,创建序列(一)
  16. 搭建mysql 主从复制The slave I/O thread stops because master and slave have equal MySQL server UUIDs
  17. 转载的一篇嵌入式大佬经验博文
  18. MySQL入门第十天(数据库编程)
  19. List、Collections
  20. DBeaver 操作数据库

热门文章

  1. python画图plt函数学习
  2. 计算机毕业设计SSM二手交易平台【附源码数据库】
  3. 【克罗地亚】INSTRUKCIJE
  4. UML之对象图(与类图的区别)
  5. css实现3D旋转效果
  6. 如何在搭载 Apple M2 芯片的 Mac 上安装 macOS 虚拟机
  7. 每年支付 m 次的年金
  8. 简述C和C++程序员学习历程
  9. Electron开发跨平台桌面应用
  10. Sublime Text 3 安装 BracketHighlighter