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.如果在这个范围以内,那么这两个点就应该连在一起。而且还应该按照两个点的距离计算这条线的颜色。
往期精选:
部分代码:
下面是主循环的代码:
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