python画出《雪景》的效果
欢迎加入我们卧虎藏龙的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画出《雪景》的效果相关推荐
- python画二维温度云图_利用python画出词云图
本文将介绍如何利用python中相应的模块画出词云图.首先给出效果图: 其中词云图中的词汇是对手机短信中的垃圾短信的统计,字体越大表示在垃圾短信中出现的频次越高.下面给出具体的步骤. 读取" ...
- 如何用python画出自己喜欢的表情包
"表情包"是现在非常流行的交流方式,通过一张图片就能把文字不能表达或不便于表达的情感给表示出来,表情包一经诞生,就统治了中国人的社交圈,尤其是年轻人,他们的社交方式 ...
- python 画出决策边界_python 画出使用分类器得到的决策边界
python 画出使用分类器得到的决策边界 发布时间:2020-09-25 21:10:09 来源:脚本之家 阅读:113 作者:星之空殇 获取数据集,并画图代码如下: import numpy as ...
- python怎么画人像_教你如何用Python画出心目中的自己
原标题:教你如何用Python画出心目中的自己 引言:人脸图像的生成在各个行业有着重要应用,例如刑事调查.人物设计.教育培训等.然而一幅逼真的人脸肖像,对于职业画家也要至少数小时才能绘制出来:对于从未 ...
- python画人民大会堂_太震撼了,我用python画出全北京的公交线路动图
原标题:太震撼了,我用python画出全北京的公交线路动图 今天教大家用pyecharts制作北京市公交线路动态图,这应该是全网唯一一篇能正常运行的教程 一.获取百度秘钥 首先,本项目需要引用百度地图 ...
- echarts词云图形状_怎么用Python画出好看的词云图?
相信很多人在第一眼看到下面这些图时,都会被其牛逼的视觉效应所吸引,这篇文章就教大家怎么用Python画出这种图. 前期准备 上面的这种图叫做词云图,主要用途是将文本数据中出现频率较高的关键词以可视化的 ...
- python画动态爱心-使用Python画出小人发射爱心的代码
我就废话不多说了,直接上代码吧! #2.14 from turtle import * from time import sleep def go_to(x, y): up() goto(x, y) ...
- python编程爱心-使用Python画出小人发射爱心的代码
我就废话不多说了,直接上代码吧! #2.14 from turtle import * from time import sleep def go_to(x, y): up() goto(x, y) ...
- python画曲线-利用python画出AUC曲线的实例
以load_breast_cancer数据集为例,模型细节不重要,重点是画AUC的代码. 直接上代码: from sklearn.datasets import load_breast_cancer ...
- python中词云图怎样变成特殊图案_如何利用python画出一个多变的词云图?(1)...
问题描述: 如何利用python画出一个多变的词云图? 解决方法:import numpy as np import matplotlib import matplotlib.pyplot as pl ...
最新文章
- 学习IOS开问题篇--视图的模型控件属性写在私有分类中的原因
- JavaFX UI控件教程(十五)之Combo Box
- 熟练掌握git撤销命令
- 7004.vue脚手架快速生成项目
- Struts2中的类型转换
- golang sqlx scan 到结构体中_Golang语言并发编程之定时器
- 安鑫 十年资产翻十倍 普通人是怎么做到的
- 团队组成五个基本要素_团队管理的五个基本要素
- 鲜有人知道的项目,各种邀请码偷偷做几个W
- csvn-httpd启动报AH00094错解决办法
- 充电IC和电量计的驱动调试
- PWM和SPWM的区别
- MySQL中的条件判断函数 CASE WHEN、IF、IFNULL你会用吗?
- 静态包含和动态包含的区别
- shell获取hive查询数据结果_在shell中判断hive查询记录数大小
- VSCode代码格式化快捷键
- 第094讲: Pygame:飞机大战5 | 学习记录(小甲鱼零基础入门学习Python)
- 微软面试题:打印折纸的折痕
- 简洁风个人简历自我介绍PPT模板
- cobaltstrike--CHM、LNK钓鱼网站钓鱼
热门文章
- 剑指 Offer 65. 不用加减乘除做加法
- 在Vue中使用CKEditor5富文本编辑器
- 爬梯:Java序列化知识
- OPPO百万级高并发MongoDB集群性能数十倍提升优化实践
- C# web页面展示个性化表格
- 退货退款的售后,如何退还金币/有偿优惠券的问题
- 1165g7安装linux,Tiger Lake i7-1165G7 Linux性能测试:软件版本组合对跑分影响较大
- 机器人也有高考?来看看你的分数
- vue3.0 study(二) 安装 element-plus踩坑汇总
- 华为荣耀8x可以升级成鸿蒙系统吗,荣耀手机能升级鸿蒙系统吗?荣耀升级鸿蒙系统机型名单及时间表...