|
欢迎来到英杰社区https://bbs.csdn.net/topics/617804998一、实现效果: 二、准备工作(1)、导入必要的模块: 代码首先导入了需要使用的模块:requests、lxml和csv。importrequestsfromlxmlimportetreeimportcsv 如果出现模块报错 进入控制台输入:建议使用国内镜像源pipinstall模块名称-ihttps://mirrors.aliyun.com/pypi/simple 我大致罗列了以下几种国内镜像源:清华大学https://pypi.tuna.tsinghua.edu.cn/simple阿里云https://mirrors.aliyun.com/pypi/simple/豆瓣https://pypi.douban.com/simple/百度云https://mirror.baidu.com/pypi/simple/中科大https://pypi.mirrors.ustc.edu.cn/simple/华为云https://mirrors.huaweicloud.com/repository/pypi/simple/腾讯云https://mirrors.cloud.tencent.com/pypi/simple/firework类classfirework:def__init__(self,x,y,color):self.x=xself.y=yself.color=colorself.radius=1self.speed=random.uniform(0.5,1.5)self.angle=math.radians(random.randint(0,360))self.vx=self.speed*math.cos(self.angle)self.vy=self.speed*math.sin(self.angle)self.age=0self.alive=Trueself.particles=[]这个类表示了一个烟花对象,它有以下属性:x和y:当前烟花的坐标。color:当前烟花的颜色。radius:当前烟花的半径。speed:当前烟花的速度。angle:当前烟花的运动角度。vx和vy:当前烟花的速度在x和y方向上的分量。age:当前烟花已经存在的时间。alive:当前烟花是否还存活。particles:当前烟花爆炸后生成的粒子列表。colorChange函数defcolorChange(color,age):r,g,b=colorifage>255:age=255ifage=1;当status>100时,烟花的生命期终止self.nParticle=random.randint(80,100)#粒子数量self.center=[random.randint(0,width-15),random.randint(0,height-15)]#烟花随机中心坐标self.oneParticle=[]#原始粒子坐标(100%状态时)self.rotTheta=random.uniform(-1,2*math.pi)#椭圆平面旋转角self.ellipsePara=[random.randint(30,40),random.randint(20,30)]#椭圆参数方程:x=a*cos(theta),y=b*sin(theta)theta=2*math.pi/self.nParticleforiinrange(self.nParticle):t=random.uniform(-1.0/16,1.0/16)#产生一个[-1/16,1/16)的随机数x,y=self.ellipsePara[0]*math.cos(theta*i+t),self.ellipsePara[1]*math.sin(theta*i+t)#椭圆参数方程xx,yy=x*math.cos(self.rotTheta)-y*math.sin(self.rotTheta),y*math.cos(self.rotTheta)+x*math.sin(self.rotTheta)#平面旋转方程self.oneParticle.append([xx,yy])self.curParticle=self.oneParticle[0:]#当前粒子坐标self.thread=threading.Thread(target=self.extend)#建立线程对象完整代码,见文末 资料获取,更多粉丝福利,关注下方公众号:“英杰代码编程”获取 回复"python爱心代码",“爱心代码”,“python爱心”均可获取完整代码
|
|