#-*- coding: utf-8 -*-#Nola

importtkinter as tkfrom PIL importImage, ImageTkfrom time importtime, sleepfrom random importchoice, uniform, randintfrom math importsin, cos, radians#模拟重力

GRAVITY = 0.05

#颜色选项(随机或者按顺序)

colors = ['red', 'blue', 'yellow', 'white', 'green', 'orange', 'purple', 'seagreen', 'indigo', 'cornflowerblue']'''particles 类

粒子在空中随机生成随机,变成一个圈、下坠、消失

属性:

- id: 粒子的id

- x, y: 粒子的坐标

- vx, vy: 在坐标的变化速度

- total: 总数

- age: 粒子存在的时长

- color: 颜色

- cv: 画布

- lifespan: 最高存在时长'''

classParticle:def __init__(self, cv, idx, total, explosion_speed, x=0., y=0., vx=0., vy=0., size=2., color='red', lifespan=2,**kwargs):

self.id=idx

self.x=x

self.y=y

self.initial_speed=explosion_speed

self.vx=vx

self.vy=vy

self.total=total

self.age=0

self.color=color

self.cv=cv

self.cid=self.cv.create_oval(

x- size, y - size, x +size,

y+ size, fill=self.color)

self.lifespan=lifespandefupdate(self, dt):

self.age+=dt#粒子范围扩大

if self.alive() andself.expand():

move_x= cos(radians(self.id * 360 / self.total)) *self.initial_speed

move_y= sin(radians(self.id * 360 / self.total)) *self.initial_speed

self.cv.move(self.cid, move_x, move_y)

self.vx= move_x / (float(dt) * 1000)#以自由落体坠落

elifself.alive():

move_x= cos(radians(self.id * 360 /self.total))#we technically don't need to update x, y because move will do the job

self.cv.move(self.cid, self.vx + move_x, self.vy + GRAVITY *dt)

self.vy+= GRAVITY *dt#移除超过最高时长的粒子

elif self.cid is notNone:

cv.delete(self.cid)

self.cid=None#扩大的时间

defexpand (self):return self.age <= 1.2

#粒子是否在最高存在时长内

defalive(self):return self.age <=self.lifespan'''循环调用保持不停'''

defsimulate(cv):

t=time()

explode_points=[]

wait_time= randint(10, 100)

numb_explode= randint(6, 10)#创建一个所有粒子同时扩大的二维列表

for point inrange(numb_explode):

objects=[]

x_cordi= randint(50, 550)

y_cordi= randint(50, 150)

speed= uniform(0.5, 1.5)

size= uniform(1, 3)

color=choice(colors)

explosion_speed= uniform(0.2, 1)

total_particles= randint(10, 50)for i in range(1, total_particles):

r= Particle(cv, idx=i, total=total_particles, explosion_speed=explosion_speed, x=x_cordi, y=y_cordi,

vx=speed, vy=speed, color=color, size=size, lifespan=uniform(0.6, 1.75))

objects.append(r)

explode_points.append(objects)

total_time=.0#1.8s内一直扩大

while total_time < 1.8:

sleep(0.01)

tnew=time()

t, dt= tnew, tnew -tfor point inexplode_points:for item inpoint:

item.update(dt)

cv.update()

total_time+=dt#循环调用

root.after(wait_time, simulate, cv)def close(*ignore):"""退出程序、关闭窗口"""

globalroot

root.quit()if __name__ == '__main__':

root=tk.Tk()

cv= tk.Canvas(root, height=400, width=600)#绘制一个黑色背景

cv.create_rectangle(0, 0, 600, 400, fill='black')#cv = tk.Canvas(root, height=400, width=600)

## 选一个好看的背景会让效果更惊艳!

#image = Image.open("./image.jpg")

#photo = ImageTk.PhotoImage(image)

# #cv.create_image(0, 0, image=photo, anchor='nw')

cv.pack()

root.protocol("WM_DELETE_WINDOW", close)

root.after(100, simulate, cv)

root.mainloop()

用python画烟花-用python做一个烟花show相关推荐

  1. python手机版做小游戏代码大全-Python大牛手把手教你做一个小游戏,萌新福利!...

    原标题:Python大牛手把手教你做一个小游戏,萌新福利! 引言 最近python语言大火,除了在科学计算领域python有用武之地之外,在游戏.后台等方面,python也大放异彩,本篇博文将按照正规 ...

  2. 利用python加上ffmpeg,ffmpy,做一个音视频格式转换器

    利用python加上ffmpeg,可以做一个简单的音乐或者视频格式转换器. 可以利用PyQt5做界面,本例中比较简单: 流程非常简单,点击"选择源文件",选取要转换的音频或者视频文 ...

  3. 七夕节马上到了,有对象的,无对象的必备神奇用Python做一个烟花秀

    今天已经周三了还有三天就是七夕节了,要给女朋友买礼物怕是来不及了! 那怎么办呢?那么就给她准备一个就全城烟花视频吧. 可除了土豪,不是所有人都能在整个城市放烟花的.对于一个普通的不能再普通的我也只能想 ...

  4. 用python做生日礼物_如何做一个网页送给女朋友做生日礼物?

    如何做一个网页送给女朋友做生日礼物 本文里面涉及到python,HTML ,css,JavaScript的知识,是基于python的flask框架做的一个小型网站,里面可以实现跳转功能,怎么配置fla ...

  5. python大作业数独_python做一个数独小游戏

    最近看了下python的一些知识,在这里记载一下. 1.首先是安装,在官网下载最新的版本3.6,安装的时候要注意在下面勾选上ADD TO PATH,安装的时候会自动写入到环境变量里面,如果没有勾选,可 ...

  6. Python 用Ursina 3D引擎做一个太阳系行星模拟器

    这次,我们再来用Ursina引擎来做一个太阳系行星模拟器吧! 想要了解Ursina 3D引擎的基本使用方法的话,查看我的另一篇文章: 手把手教你用Python编一个<我的世界> 1. 认识 ...

  7. python画树叶-用python画树叶

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. draws a 叶子 and fill it. t.begin_fill ...

  8. python画曲线-利用python画出AUC曲线的实例

    以load_breast_cancer数据集为例,模型细节不重要,重点是画AUC的代码. 直接上代码: from sklearn.datasets import load_breast_cancer ...

  9. python画超长图-python 画长图

    广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! 最近遇到个任务需要画一些坐标图,我就在想,用了这么长时间的 python 了,能不 ...

  10. 用python画星空-【Python】手把手教你绘制星空旅游线路图

    0 前言 5月是美国的毕业季,我家领导也即将毕业了,我们将在美国进行为期两周的毕业旅行.其实类似这样的航线图我以前也用PPT绘制过,给领导用于发朋友圈,虽然总体能表达出意思,但是效果不能让自己满意,见 ...

最新文章

  1. C++ map 的使用
  2. 主要元素(超过一半元素)
  3. 为你解读7大类深度CNN架构创新综述(附论文)
  4. spring中间scope详细解释
  5. Oracle优化08-并行执行
  6. Asp.net mvc 添加Jquery UI
  7. 系统相机裁剪比例_真皮、皮革自动裁剪机,拒绝材料浪费,一年可以节省十几万!...
  8. 打家劫舍—leetcode198
  9. 万劫不复:恐怖悬疑话剧《下一个就是你》
  10. 以编程方式访问Java基本类型的大小
  11. 计算机更改桌面,2010年职称计算机考试:更改桌面背景和颜色
  12. PHP file_get_contents() 函数
  13. 安装python工具
  14. 18 Strings for Mac(Xcode文件翻译工具)
  15. 精通Hyperledger之Hyperledger composer查询语言(17)
  16. 常微分方程的数值解法
  17. 计算机会议论文扩充期刊,计算机权威期刊 会议.doc
  18. 计算机强制关机后无法正常启动,win10系统强制关机后无法正常启动了如何解决...
  19. [病毒分析]熊猫烧香
  20. 七日杀服务器怎么修改天数,七日杀调整游戏天数 | 手游网游页游攻略大全

热门文章

  1. [再寄小读者之数学篇](2014-11-19 等差数列的部分和)
  2. Coding4Fun Toolkit支持本地化解决办法
  3. Web.config配置访问权限
  4. 61计蒜客 动态规划基础 蒜头君的城堡之旅
  5. Python List中的append和extend
  6. git使用-设置项目忽略文件
  7. [转]阿里巴巴集团去IOE运动的思考与总结
  8. KB001: 兼容性问题与浏览器的内核及渲染模式
  9. 搭建kafaka_kafka单机环境搭建及其基本使用
  10. 哪本python入门书内容最详细-重磅 | 由浅入深的 AI 学习路线,最详细的资源整理!...