用python放烟花,python 实现漂亮的烟花

  用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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: