python实现烟花的实例代码怎么编写
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇文章给大家分享的是有关python实现烟花的实例代码怎么编写,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。实现代码如下:# -*-
千家信息网最后更新 2026年11月01日python实现烟花的实例代码怎么编写
本篇文章给大家分享的是有关python实现烟花的实例代码怎么编写,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
实现代码如下:
# -*- coding: utf-8 -*-import math, random,timeimport threadingimport tkinter as tkimport re#import uuidFireworks=[]maxFireworks=8height,width=600,600class firework(object): def __init__(self,color,speed,width,height): #uid=uuid.uuid1() self.radius=random.randint(2,4) #粒子半径为2~4像素 self.color=color #粒子颜色 self.speed=speed #speed是1.5-3.5秒 self.status=0 #在烟花未爆炸的情况下,status=0;爆炸后,status>=1;当status>100时,烟花的生命期终止 self.nParticle=random.randint(20,30) #粒子数量 self.center=[random.randint(0,width-1),random.randint(0,height-1)] #烟花随机中心坐标 self.oneParticle=[] #原始粒子坐标(100%状态时) self.rotTheta=random.uniform(0,2*math.pi) #椭圆平面旋转角 #椭圆参数方程:x=a*cos(theta),y=b*sin(theta) #ellipsePara=[a,b] self.ellipsePara=[random.randint(30,40),random.randint(20,30)] theta=2*math.pi/self.nParticle for i in range(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) #建立线程对象 def extend(self): #粒子群状态变化函数线程 for i in range(100): self.status+=1 #更新状态标识 self.curParticle=[[one[0]*self.status/100, one[1]*self.status/100] for one in self.oneParticle] #更新粒子群坐标 time.sleep(self.speed/50) def explode(self): self.thread.setDaemon(True) #把现程设为守护线程 self.thread.start() #启动线程 def __repr__(self): return ('color:{color}\n' 'speed:{speed}\n' 'number of particle: {np}\n' 'center:[{cx} , {cy}]\n' 'ellipse:a={ea} , b={eb}\n' 'particle:\n{p}\n' ).format(color=self.color,speed=self.speed,np=self.nParticle,cx=self.center[0],cy=self.center[1],p=str(self.oneParticle),ea=self.ellipsePara[0],eb=self.ellipsePara[1])def colorChange(fire): rgb=re.findall(r'(.{2})',fire.color[1:]) cs=fire.status f=lambda x,c: hex(int(int(x,16)*(100-c)/30))[2:] #当粒子寿命到70%时,颜色开始线性衰减 if cs>70: ccr,ccg,ccb=f(rgb[0],cs),f(rgb[1],cs),f(rgb[2],cs) else: ccr,ccg,ccb=rgb[0],rgb[1],rgb[2] return '#{0:0>2}{1:0>2}{2:0>2}'.format(ccr,ccg,ccb)def appendFirework(n=1): #递归生成烟花对象 if n>maxFireworks or len(Fireworks)>maxFireworks: pass elif n==1: cl='#{0:0>6}'.format(hex(int(random.randint(0,16777215)))[2:]) # 产生一个0~16777215(0xFFFFFF)的随机数,作为随机颜色 a=firework(cl,random.uniform(1.5,3.5),width,height) Fireworks.append( {'particle':a,'points':[]} ) #建立粒子显示列表,'particle'为一个烟花对象,'points'为每一个粒子显示时的对象变量集 a.explode() else: appendFirework() appendFirework(n-1)def show(c): for p in Fireworks: #每次刷新显示,先把已有的所以粒子全部删除 for pp in p['points']: c.delete(pp) for p in Fireworks: #根据每个烟花对象,计算其中每个粒子的显示对象 oneP=p['particle'] if oneP.status==100: #状态标识为100,说明烟花寿命结束 Fireworks.remove(p) #移出当前烟花 appendFirework() #新增一个烟花 continue else: li=[[int(cp[0]*2)+oneP.center[0],int(cp[1]*2)+oneP.center[1]] for cp in oneP.curParticle] #把中心为原点的椭圆平移到随机圆心坐标上 color=colorChange(oneP) #根据烟花当前状态计算当前颜色 for pp in li: p['points'].append(c.create_oval(pp[0]-oneP.radius, pp[1]-oneP.radius, pp[0]+oneP.radius, pp[1]+oneP.radius, fill=color)) #绘制烟花每个粒子 root.after(50, show,c) #回调,每50ms刷新一次if __name__=='__main__': appendFirework(maxFireworks) root = tk.Tk() cv = tk.Canvas(root, height=height, width=width) cv.create_rectangle(0, 0, width, height, fill="black") cv.pack() root.after(50, show,cv) root.mainloop()图片展示:

以上就是python实现烟花的实例代码怎么编写,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。
烟花
粒子
对象
坐标
状态
椭圆
线程
颜色
代码
方程
实例
参数
寿命
平面
更多
标识
知识
篇文章
随机数
更新
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
南京欣网互联网络科技
麻工互联网科技
金融科技 互联网金融
互联网科技公司官网
广州宏创互联网科技
未来的互联网科技
狮子座互联网科技有限公司
广州互联网络科技有限公司
美国互联网黑科技
互联网 科技服务平台
互联网科技素材视频竖屏
互联网科技与大数据专业
天津腾达互联网科技有限公司
允成互联网科技有限公司融资
工业互联网等科技实现智能化赋能
互联网科技大赛获奖感言
陕西云淼互联网科技公司
互联网科技机房
玉溪新华互联网科技怎么选
三亚科技创新互联网基地
小米移动互联网科技园
互联网科技工作委员会
互联网科技工作委员会主任
互联网科技有限公司图片
互联网 科技
新浪科技互联网
互联网科技汛
阿里巴巴算科技企业还是互联网
湖北码尼互联网科技有限公司电话
苏州五指互联网络科技有限