用python放烟花,python 实现漂亮的烟花
用大蟒画烟花的方法:首先创建一个所有粒子同时扩大的二维列表;然后实现粒子范围扩大,以自由落体坠落;接着移除超过最高时长的粒子;最后循环调用保持不停。
用python画烟花的方法:
# -*-编码: utf-8 -*-
#诺拉
将图形界面作为坦克导入
从太平航运进口图片,ImageTk
从时间导入时间,睡眠
从随机进口选择,统一,randint
从数学导入正弦、余弦、弧度
# 模拟重力
重力=0.05
# 颜色选项(随机或者按顺序)
colors=[红色,蓝色,黄色,白色,绿色,橙色,紫色,海绿色,靛蓝,矢车菊蓝]
微粒类
粒子在空中随机生成随机,变成一个圈、下坠、消失
属性:
- id:粒子的编号
- x,y:粒子的坐标
- vx,vy:在坐标的变化速度
-总计:英镑总数
-年龄:岁粒子存在的时长
-颜色:颜色
- cv:画布
-生命跨度:最高存在时长
类别粒子:
def __init__(self,cv,idx,total,explosion_speed,x=0 .y=0 .vx=0 .vy=0 .大小=2。color=red ,寿命=2,
* *夸脱):
self.id=idx
self.x=x
self.y=y
self.initial_speed=爆炸_速度
self.vx=vx
self.vy=vy
self.total=总计
self.age=0
自我颜色=颜色
self.cv=cv
self.cid=self.cv.create_oval(
x尺寸,y尺寸,x尺寸,
y尺寸,fill=self.color)
自我寿命=寿命
定义更新(自身,dt):
self.age=dt
# 粒子范围扩大
if self.alive()和self.expand():
move_x=cos(弧度(自我。id * 360/自我。合计))*自身。初始速度
move_y=sin(弧度(自我。id * 360/自我。合计))*自身。初始速度
self.cv.move(self.cid,move_x,move_y)
self.vx=move_x/(float(dt) * 1000)
# 以自由落体坠落
elif self.alive():
move_x=cos(弧度(self.id * 360/self.total))
#从技术上讲,我们不需要更新x,y,因为移动会完成这项工作
self.cv.move(self.cid,self.vx move_x,self.vy重力* dt)
self.vy=重力* dt
# 移除超过最高时长的粒子
elif self.cid不是无:
cv.delete(self.cid)
self.cid=无
# 扩大的时间
定义扩展(自身):
回归自我。年龄=1.2
# 粒子是否在最高存在时长内
定义活动(自身):
回归自我。年龄=自我。寿命
循环调用保持不停
定义模拟(简历):
t=时间()
explode_points=[]
wait_time=randint(10,100)
number _ explode=randint(6,10)
# 创建一个所有粒子同时扩大的二维列表
对于范围内的点(编号_分解):
对象=[]
x_cordi=randint(50,550)
y_cordi=randint(50,150)
速度=均匀(0.5,1.5)
大小=统一(1,3)
颜色=选择(颜色)
爆炸速度=均匀(0.2,1)
total_particles=randint(10,50)
对于范围(1,总粒子数):内的我
r=粒子(cv,idx=i,total=total_particles,explosion _ speed=explosion _ speed,x=x_cordi,y=y_cordi,
vx=速度,vy=速度,颜色=颜色,大小=大小,寿命=均匀(0.6,1.75))
objects.append(r)
explode_points.append(对象)
total_time=.0
# 1.8s内一直扩大
而总计_时间1.8:
睡眠(0.01)
tnew=时间()
t,dt=tnew,tnew - t
对于explode_points:中的点
对于点:中的项目
item.update(dt)
cv.update()
总时间=dt
# 循环调用
root.after(wait_time,simulate,cv)
定义关闭(*忽略):
退出程序、关闭窗口
全局根
root.quit()
if __name__==__main__:
root=tk .Tk()
cv=tk .画布(根,高度=400,宽度=600)
# 绘制一个黑色背景
cv.create_rectangle(0,0,600,400,fill=black )
# cv=tk .画布(根,高度=400,宽度=600)
# # 选一个好看的背景会让效果更惊艳!
# image=Image.open( ./图片。jpg’)
# photo=ImageTk .照片图像(图像)
#
# cv.create_image(0,0,image=照片,anchor=nw )
cv.pack()
根。协议( WM _ DELETE _ WINDOW ,关闭)
root.after(100,模拟,简历)
root.mainloop()实现效果图:
相关免费学习推荐:python视频教程
以上就是如何用大蟒画烟花的详细内容,更多请关注盛行信息技术软件开发工作室其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。