利用Python实现好看的水波特效
作者:木木子学python 发布时间:2023-05-26 22:23:53
标签:Python,水波,特效
前言
你的心要如溪水般柔软,你的眼波要像春天般明媚。
——余光中
似乎很少看见湍急的溪流,多数时候,溪水总是潺潺地流着,不疾不徐,有自己的节奏;
也似乎很少看见污浊的溪流,多数时候,溪水总是澄澈见底,偶尔拔起沙石,也很快能静置溪底,重归明净。
一个像溪水的人,多半是通透清明的,他知道如何过滤掉和沉落生命中的杂质,以一颗澄澈的心,往自己的方向流去。
描写了这么多关于水的诗句,你是否能清楚的表达,了解水是怎样流动的呢?
今天小编就用代码描写我心目中的水流是怎样的,Python代码模拟水的波动开始啦
一、运行环境
1)环境安装
Python3、 Pycharm 、Pygame模块部分自带模块就不展示啦。(如需安装包、激活码等直接
私信我即可安装问题解答都可以的哈~)
第三方库的安装:
pip install pygame 或者带镜像源 pip install -i https://pypi.douban.com/simple/ +模块名
二、效果展示
截图的貌似展示不出来水的波动效果,嗨没办法 有点儿懒,就没拍视频,大家将就着看叭
真的视频效果好好看滴!是随水波荡漾的~
1)第一组随机风景图
2)第二组人物随机图
3)第三组真人图片
三、代码展示
"""照片模拟水的波动效果"""
import pygame, os
from pygame.locals import *
from math import sin # 导入正弦函数的工具箱
import time
main_dir = os.path.split(os.path.abspath(__file__))[0] # 获取当前文件所在路径
def main():
pygame.init() # 初始化
screen = pygame.display.set_mode((640, 480), HWSURFACE|DOUBLEBUF) # 生成一个窗口
imagename = os.path.join(main_dir, 'data', 'liquid.bmp') # 拼接图片路径
bitmap = pygame.image.load(imagename) # 加载图片
bitmap = pygame.transform.scale2x(bitmap) # 将图像放大两倍
bitmap = pygame.transform.scale2x(bitmap) # 将图像放大两倍
if screen.get_bitsize() == 8: # 以相同的格式获取图像和屏幕
screen.set_palette(bitmap.get_palette())
else:
bitmap = bitmap.convert()
anim = 0.0
while 1:
for e in pygame.event.get(): # 处理事件
if e.type in [QUIT, KEYDOWN, MOUSEBUTTONDOWN]:
return
anim = anim + 0.02
for x in range(0,640,20): # 模拟水的波动效果
xpos = (x + (sin(anim + x * .01) * 15)) + 20
for y in range(0, 480, 20):
ypos = (y + (sin(anim + y * .01) * 15)) + 20
screen.blit(bitmap, (x, y), (xpos, ypos, 20, 20))
pygame.display.flip() # 更新
time.sleep(0.01) # 等待0.01s
if __name__ == '__main__':
main()
来源:https://juejin.cn/post/7091633252250681374
0
投稿
猜你喜欢
- 今天的第二个作品,哈哈哈哈,搞起来感觉还挺有意思的,不过代码里纸牌J,Q,K,A几个数字被我替换成了11,12,13,14......主要是
- redis无法访问本机真实ip地址1.我在进行用jedis来连接redis时出现了问题:我用Jedis jedis = new Jedis(
- 这本来是翻译Estelle Weyl的《15 JavaScript Gotchas》,里面介绍的都是在JavaScript编程实践中平时容易
- 一、groupby 能做什么?python中groupby函数主要的作用是进行数据的分组以及分组后地组内运算!对于数据的分组和分组运算主要是
- 1. MySQL表空间回收我们经常会发现一个问题,就是把表数据删除以后发现,数据文件大小并没有变化,这就是标题中所说的MySQL数据库表空间
- 1.where中的子查询示例数据参见此文章案例:查询比最低工资高的员工姓名和薪资子查询,先查询子查询括号里的,再向上级进行查询mysql&g
- 一、python线程的模块1.thread和threading模块thread模块提供了基本的线程和锁的支持threading提供了更高级别
- 一、引言生成数据库表有下面的三种方式:代码生成。程序包管理器控制台迁移。命令行迁移。下面分别介绍上面的三种方法。二、具体示例1、代码生成在程
- Python代码运行助手可以让你在线输入Python代码,然后通过本机运行的一个Python脚本来执行代码。原理如下:在网页输入代码:点击R
- 1、灵活运用样式熟悉网页设计的网友就知道,调用Style的方法很多,我们可以单击鼠标右键选择Custo
- CSS2.1 中规定了关于 CSS 规则 Specificity(特异性)的计算方式,用一个四位的数
- linux默认是安装了python,默认是安装python2.6.6,可能安装的版本是不能符合我们需要的python要求的。我们需要重新安装
- 一、tensor加减乘除加法操作import torchx = torch.randn(2, 3)y = torch.randn(2, 3)
- 查询游戏历史成绩最高分前100Sql代码SELECT ps.* FROM cdb_playsgame ps WHERE ps.credits
- 最近刚换工作不久,没太多的时间去整理工作中的东西,大部分时间都在用来熟悉新公司的业务,熟悉他们的代码框架了,最主要的是还有很多新东西要学,我
- binascii模块用法binascii模块用于在二进制和ASCII之间转换>> import binascii# 将binar
- 目录实际项目中遇到的需求有一些不好的实现方式个人感觉比较好的实现方式功能已实现,但我又开始了新的思考最终方案——高阶组件实际项目中遇到的需求
- 本文实例讲述了PHP实现获取第一个中文首字母并进行排序的方法。分享给大家供大家参考,具体如下:最近在做储值结算,需求里结算首页需要按门店的首
- PHP PDO 预处理语句与存储过程很多更成熟的数据库都支持预处理语句的概念。什么是预处理语句?可以把它看作是想要运行的 SQL 的一种编译
- 写在前面在写go的时候经常用到序列化、反序列化,记录一下遇到过的坑。空指针会被解析成字符串"null"type Pers