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

importtkinter as tkfrom PIL importImage, ImageTkfrom time importtime, sleepfrom random importchoice, uniform,randintfrom math importsin, cos, radians## 初始化tkinter 创建根部件 必须在创建其他部件之前创建 且只有一个#root = tk.Tk()## Label部件#w = tk.Label(root, text="Hello Tkinter!")## pack告诉tkinter调整窗口大小适应所用的小部件#w.pack()#root.mainloop()#模拟重力

GRAVITY = 0.05colors= ['red', 'blue', 'pink', 'white', 'green', 'orange', 'purple', 'seagreen', 'indigo', 'cornflowerblue']classPart(object):"""particles 类

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

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

:param idx: 粒子的id

:param total: 总数

:param explosion_speed: 粒子初始速度

:param x: 粒子的横坐标

:param y: 粒子的纵坐标

:param vx: 粒子在x轴上的变化速度

:param vy: 粒子在y轴上的变化速度

:param size: 大小

:param color: 颜色

:param lifespan: 最高存在时长

:param 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):"""粒子运动函数,膨胀

:param dt:

:return:"""self.age+=dtif 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.vy = move_y / (float(dt)*1000)

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))

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

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

elif self.cid is notNone:

self.cv.delete(self.cid)

self.cid=Nonedefalive(self):"""检查粒子是否在最高存在时长内

:return: bool"""

return self.age <= 1.2

defexpand(self):"""定义膨胀效果时间帧

:return: bool"""

return self.age <=self.lifespandefsimulate(cv):"""循环调用保持不停

:param cv: 画布

:return:"""numb_explode= randint(6, 10)

wait_time= randint(10, 100)

explode_points=[]

t=time()#为所有模拟烟花绽放的全部粒子创建一个列表

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) #随机生成一个0.5-3之间的实数

color =choice(colors)

explosion_speed= uniform(0.2, 1)

total_particals= randint(5, 50)for i in range(1, total_particals):

r= Part(cv, idx=1, total=total_particals, 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)#设置每个粒子没0.01秒更新状态 生命周期1.8秒 1.6秒存活(1.2秒绽放,0.4秒坠落,0.2秒移除)

total_time =.0#在1.8秒时间帧内保持更新

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):"""退出程序,关闭窗口

:param ignore:

:return:"""

globalroot

root.quit()if __name__ == '__main__':#初始化tkinter 创建根部件

root =tk.Tk()

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

cv.create_rectangle(0, 0, 600, 600, fill='black')#使用背景图片

#image = Image.open('./image.png')

#photo = ImageTk.PhotoImage(image)

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

cv.pack()

root.protocol('WM_DELETE_WINDOW', close)#1秒后开始条约simulate()

root.after(100, simulate, cv)

root.mainloop()

python流星雨代码_用python一起来看流星雨相关推荐

  1. python编写代码_用 Python 编写干净、可测试、高质量的代码

    用 Python 编写干净.可测试.高质量的代码 Noah Gift 2010 年 12 月 20 日发布 简介 编写软件是人所承担的最复杂的任务之一.AWK 编程语言和 "K and R ...

  2. python房子代码_用python爬取租房网站信息的代码

    自己在刚学习python时写的,中途遇到很多问题,查了很多资料,下面就是我爬取租房信息的代码: 链家的房租网站 两个导入的包 1.requests 用来过去网页内容 2.BeautifulSoup i ...

  3. python三维重建代码_基于Python的三维重建开源代码

    [实例简介] 基于Python的三维重建开源代码,包括特征提取,SFM,PMVS以及CMVS等相关功能! [实例截图] [核心代码] sfm-bundler(python) └── sfm-bundl ...

  4. python黑客代码_[翻译]Python开发中的密码散列(Hashing)

    [翻译]Python开发中的密码散列(Hashing) 杀戮 (乌云安全实验室的杂役) | 2015-01-04 23:17 去年7月的一篇小文,看着还不错,就翻译了,当然还是我自己的语气,对于文中的 ...

  5. python全球购代码_理解python的unicode字符串

    基于python2.7中的字符串: unicode-->编码encode('utf-8')-->写入文件 读出文件-->解码decode('utf-8')-->unicode ...

  6. python樱花代码_使用python图形模块turtle库绘制樱花、玫瑰、圣诞树代码实例

    今天为大家介绍几个Python"装逼"实例代码,python绘制樱花.玫瑰.圣诞树代码实例,主要使用了turtle库 Python绘制樱花代码实例 动态生成樱花 效果图(这个是动态 ...

  7. python点名代码_基于python tkinter的点名小程序功能的实例代码

    基于python tkinter的点名小程序功能的实例代码,花名册,次数,窗口,未找到,初始化 基于python tkinter的点名小程序功能的实例代码 易采站长站,站长之家为您整理了基于pytho ...

  8. python浪漫代码_五行Python代码实现批量抠图

    你是否曾经想将某张照片中的人物抠出来,然后拼接到其他图片上去,从而可以即使你在天涯海角,我也可以到此一游?专业点的人使用 PhotoShop 的"魔棒"工具可以抠图,非专业人士可以 ...

  9. python图像识别代码_用Python进行简单图像识别(验证码)

    这是一个最简单的图像识别,将图片加载后直接利用Python的一个识别引擎进行识别 将图片中的数字通过 pytesseract.image_to_string(image)识别后将结果存入到本地的txt ...

  10. python作品代码_学习python的一些心得体会

    初识python 专升本来到桂林电子科技大学的时候,谈及这个学校也许他是全国四所叫电子科技大学的学校,而我很幸运的从这个学校里毕业了,那个时候选修一门课程就是python的选修课,从此跟python结 ...

最新文章

  1. 【进阶3-1期】JavaScript深入之史上最全--5种this绑定全面解析
  2. 082_Timing事件
  3. Spring Schedule配置及初始化
  4. nw.js启动时白屏
  5. Collection框架介绍
  6. 蓝桥杯 ADV-176 算法提高 陶陶摘苹果
  7. [Regular] 4、正则表达式的匹配原理原则
  8. 图像识别深度学习主流方案平台比较
  9. 易买网商城管理系统MySQL+JSP
  10. 统计学中的有效性和可靠性的概念
  11. ajax实现JSONP跨域
  12. C++新手入门第一课
  13. python str.split以及str.split字符串分割函数
  14. VA_LIST可变参数列表的使用方法与原理
  15. vSphere Client无法连接vSphere server解决一例
  16. AEJoy —— 彻底搞懂 AE 各种 loop* 表达式【二】
  17. java英语句子_经典英语句子 (转) - HelloWorld 善战者,求之于势,不责于人;故能择人而任势。 - BlogJava...
  18. python计算机视觉学习第8章——图像内容分类
  19. 阿里云FinalShell连接
  20. C语言—选择控制结构 已知银行整存整取存款不同期限的年息利率 要求输入存钱的期限和本金,求到期时能从银行得到的本金和复利的合计。

热门文章

  1. 算法笔记_面试题_20.数组相关_模板及示例十几道
  2. OpenCV_Camera Calibration and Rectification under QT creator( 相机标定及矫正 | QT creator环境 )
  3. VAE-变分自编码器-Auto-Encoding Variational Bayes-详细推导
  4. new Vue() 和 export default {}及Vue页面组件和标签组件说明与比较(非常重要)
  5. [Vue] : Vue实例的声明周期
  6. org.springframework.web.context.ContextLoaderListener 解决方案
  7. 初学Jmeter的摘抄学习总结----------基础知识篇
  8. 湖南附中模拟day1 瞭望塔
  9. 马踏飞燕——奔跑在Docker上的Spark
  10. MongoDB 学习笔记(一)—— 安装入门