python实现“粒子动画”

python讨论qq群:996113038


导语

最近浏览网页的时候经常看见一些炫酷的网页,其中影响最深刻的就是粒子动画。每次用鼠标点击一个位置。就会有相应的点和线的变化。虽然是非常简单的几何图形。但是给人的感觉非常好。

那今天,就带着大家来实现一个粒子动画。当然了,我们用python来实现。


代码及相关资源获取

1:关注“python趣味爱好者”公众号,回复“粒子动画”获取源代吗

2:加入群聊:996113038。在群文件中下载源代码以及相关资料。


开发工具

python3.6.4

相关第三方库:

pygame

random

math


效果演示

运行效果如下图所示:


基本原理

既然我们导入了pygame块。那原理形状显示的原理自然也就是和pygame游戏界面的原理差不多。首先设置界面:

py.init()
mysize = width,height=800,600
screen = py.display.set_mode(mysize)

现在,界面的长和宽已经设置好了。

此外,我们还要定义一个Point类。里面有点的各种功能,移动,显示,计算距离。

还有其他属性,比如速度,方向,坐标,大小....

class Point:
    speed=0
    upspeed=1;
    direction=0
    ......

下面是一个“线”的函数,里面显示的是“线”的变化:

    def line(self):                                                    #画线
        color=[0,0,0]
        self.pointlist[0].position=py.mouse.get_pos()
        for i in self.pointlist:
            for j in self.pointlist:
                s=i.distance(j.position)
                if s<150:
                    color=[int(s*1.6),int(80+s),int(180+s*0.5)]
                    py.draw.aaline(screen,color,i.position,j.position,5)

其中用到了两层for循环,将能连到一起的点连接到一起。其中判断两个点能不能连到一起的条件是s(两个点之间的距离)是否小于150.如果在这个范围以内,那么这两个点就应该连在一起。而且还应该按照两个点的距离计算这条线的颜色。


往期精选

python图片转素描风

python模拟“三体运动”轨迹


部分代码

下面是主循环的代码:

while True:
    screen.fill((255,255,255))
    for each in py.event.get():
        if each.type==py.KEYDOWN:
            if each.key==py.K_F11:
                fullscreen=not fullscreen
                if fullscreen:
                    mysize=width,height=1920,1080
                    screen = py.display.set_mode((1920,1080),py.FULLSCREEN|py.HWSURFACE)               
                else:
                    mysize = width,height=800,600
                    screen = py.display.set_mode(mysize)
                    
    mygraph.run()
    mygraph.show()
    py.display.flip()
    py.time.Clock().tick(150)

感谢大家观看,有钱的老板可以打赏一下小编哦!

扫描下方二维码,关注公众号

参考资料:

#参考来源:https://blog.csdn.net/qq_40946921/article/details/83722060?depth_1

#-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值