欢迎加入我们卧虎藏龙的python讨论qq群:729683466

导 语 ●

冬天到了

我们用python模拟一下雪景

顺便学习一下python的图像处理

以及其中的图片连帧变化

学一下这个

对写游戏很有帮助

其中用到的很多方法都是一样的。

代码及相关资源获取

1:关注“python趣味爱好者”公众号,回复“雪景 ”获取源代码

效果演示

ss

往期精选

我们的《2小时python不挂科》录制好啦

求解“背包问题”的“粒子群算法”

????

开发工具

python3.6.4

用到的第三方库:pygame random os PIL

讲解部分

一:动态雪景原理

所谓制作动态雪景,就像大家在视频里看到的那样,在一个背景图中,模拟雪花由上到下飘落,我们看看背景图。我们就是在这个背景图上画雪花。然后快速移动位置。

雪花也是一个图片,我们可以动态调节不同位置的雪花的大小,模拟出雪花远近。

模拟过程和普通的游戏帧率变化一样。每间隔一个帧率的时间,让雪花向下方移动一小段。其中,这个雪花也旋转一定的角度。然后刷新一下视频,由于视觉暂留的作用,呈现在我们眼前的就是视频一样的雪景。

二:雪花的运动

首先载入雪花图片和背景图片。

snow_image = pygame.image.load_extended('snow.png')

用pygame里面的image.load_extend()函数载入。同理,背景图片也可以这样处理。

因为不同的雪花速度,大小以及位置都是不同的,所以我们要定义一个雪花的类来表示这些雪花。其中包含有这些参数。

其中先定义一些基本的变量,如雪花的速度,位置,尺寸。例如:self.speed代表这个雪花的速度。在实例化的时候,speed是我们放进去的实参。

    def __init__(self, image, pos, speed, size, screen):super().__init__()self.screen = screenself.speed= speedself.pos = posself.image = pygame.transform.scale(image, size)self.rect = self.image.get_rect()self.rect.x = pos[0]self.rect.y = pos[1]

然后,这雪花的类中,我们定义几个重要的函数。比如雪花运动的函数。

    def update(self):self.rect.x += self.speed[0]self.rect.y += self.speed[1]# 雪花旋转self.image = pygame.transform.rotate(self.image, 90)if self.check_edges():self.rect.x = self.pos[0]self.rect.y = self.pos[1]

其中第一部分就是按照雪花的速度,修改雪花的位置,具体来说就是修改雪花的x坐标和y坐标。第二部分就是雪花本身的自我旋转,这同样也是修改了雪花的x坐标和y坐标。

雪花数量很多,我们可以定义一个snow_group = Group(),专门用来存储实例化以后的雪花。在其中添加雪花。

 snow_group.add(Snow(snow_image, pos, speed, snow_size, screen))

三:雪花飘落的控制

雪花飘落的控制,实际上用的就是一个while循环。现在screen背景上填充我们的背景图片。

screen.blit(bg, (0, 0))

然后进行雪花的控制,也就是控制雪花的飘落。用到的函数就是下面的函数。

        for snow in snow_group.copy():snow.blitme()

修改雪花的位置后,修改雪花的集合,这样才能正常的产生新的雪花并且添加到groups里面。代码如下

snow_group.update()

这些基本操作完成以后,我们还需要刷新一下界面,只有这样,雪花才能在图片上正常移动。

pygame.display.update()

在while循环的最后,我们需要设置一个时钟,用来控制帧率也就是控制这个while循环的速度,这样雪花就可以平缓飘落。

        # 设置fpsclock.tick(30)if num >= 250:breaknum += 1

最后:

大家可以试试给代码加上背景音乐,看雪景的时候听音乐岂不是更好?

作者|齐

编辑|齐

感谢大家观看

有钱的老板可打赏一下小编哦

扫描二维码

关注我们

QQ群:729683466

◰  

参考来源

代码作者:PerpetualSmile

封面来源:图怪兽

python画出《雪景》的效果相关推荐

  1. python画二维温度云图_利用python画出词云图

    本文将介绍如何利用python中相应的模块画出词云图.首先给出效果图: 其中词云图中的词汇是对手机短信中的垃圾短信的统计,字体越大表示在垃圾短信中出现的频次越高.下面给出具体的步骤. 读取" ...

  2. 如何用python画出自己喜欢的表情包

    ​​​​​​​ "表情包"是现在非常流行的交流方式,通过一张图片就能把文字不能表达或不便于表达的情感给表示出来,表情包一经诞生,就统治了中国人的社交圈,尤其是年轻人,他们的社交方式 ...

  3. python 画出决策边界_python 画出使用分类器得到的决策边界

    python 画出使用分类器得到的决策边界 发布时间:2020-09-25 21:10:09 来源:脚本之家 阅读:113 作者:星之空殇 获取数据集,并画图代码如下: import numpy as ...

  4. python怎么画人像_教你如何用Python画出心目中的自己

    原标题:教你如何用Python画出心目中的自己 引言:人脸图像的生成在各个行业有着重要应用,例如刑事调查.人物设计.教育培训等.然而一幅逼真的人脸肖像,对于职业画家也要至少数小时才能绘制出来:对于从未 ...

  5. python画人民大会堂_太震撼了,我用python画出全北京的公交线路动图

    原标题:太震撼了,我用python画出全北京的公交线路动图 今天教大家用pyecharts制作北京市公交线路动态图,这应该是全网唯一一篇能正常运行的教程 一.获取百度秘钥 首先,本项目需要引用百度地图 ...

  6. echarts词云图形状_怎么用Python画出好看的词云图?

    相信很多人在第一眼看到下面这些图时,都会被其牛逼的视觉效应所吸引,这篇文章就教大家怎么用Python画出这种图. 前期准备 上面的这种图叫做词云图,主要用途是将文本数据中出现频率较高的关键词以可视化的 ...

  7. python画动态爱心-使用Python画出小人发射爱心的代码

    我就废话不多说了,直接上代码吧! #2.14 from turtle import * from time import sleep def go_to(x, y): up() goto(x, y) ...

  8. python编程爱心-使用Python画出小人发射爱心的代码

    我就废话不多说了,直接上代码吧! #2.14 from turtle import * from time import sleep def go_to(x, y): up() goto(x, y) ...

  9. python画曲线-利用python画出AUC曲线的实例

    以load_breast_cancer数据集为例,模型细节不重要,重点是画AUC的代码. 直接上代码: from sklearn.datasets import load_breast_cancer ...

  10. python中词云图怎样变成特殊图案_如何利用python画出一个多变的词云图?(1)...

    问题描述: 如何利用python画出一个多变的词云图? 解决方法:import numpy as np import matplotlib import matplotlib.pyplot as pl ...

最新文章

  1. 学习IOS开问题篇--视图的模型控件属性写在私有分类中的原因
  2. JavaFX UI控件教程(十五)之Combo Box
  3. 熟练掌握git撤销命令
  4. 7004.vue脚手架快速生成项目
  5. Struts2中的类型转换
  6. golang sqlx scan 到结构体中_Golang语言并发编程之定时器
  7. 安鑫 十年资产翻十倍 普通人是怎么做到的
  8. 团队组成五个基本要素_团队管理的五个基本要素
  9. 鲜有人知道的项目,各种邀请码偷偷做几个W
  10. csvn-httpd启动报AH00094错解决办法
  11. 充电IC和电量计的驱动调试
  12. PWM和SPWM的区别
  13. MySQL中的条件判断函数 CASE WHEN、IF、IFNULL你会用吗?
  14. 静态包含和动态包含的区别
  15. shell获取hive查询数据结果_在shell中判断hive查询记录数大小
  16. VSCode代码格式化快捷键
  17. 第094讲: Pygame:飞机大战5 | 学习记录(小甲鱼零基础入门学习Python)
  18. 微软面试题:打印折纸的折痕
  19. 简洁风个人简历自我介绍PPT模板
  20. cobaltstrike--CHM、LNK钓鱼网站钓鱼

热门文章

  1. 剑指 Offer 65. 不用加减乘除做加法
  2. 在Vue中使用CKEditor5富文本编辑器
  3. 爬梯:Java序列化知识
  4. OPPO百万级高并发MongoDB集群性能数十倍提升优化实践
  5. C# web页面展示个性化表格
  6. 退货退款的售后,如何退还金币/有偿优惠券的问题
  7. 1165g7安装linux,Tiger Lake i7-1165G7 Linux性能测试:软件版本组合对跑分影响较大
  8. 机器人也有高考?来看看你的分数
  9. vue3.0 study(二) 安装 element-plus踩坑汇总
  10. 华为荣耀8x可以升级成鸿蒙系统吗,荣耀手机能升级鸿蒙系统吗?荣耀升级鸿蒙系统机型名单及时间表...