当前位置: 首页 > news >正文

网站修改了关键词被降权做网站 商标分类

网站修改了关键词被降权,做网站 商标分类,新发布一个网站公告怎么做,网站备案流程和规则详细内容天天敲代码的朋友#xff0c;有没有想过代码也可以变得很酷炫又浪漫#xff1f;今天就教大家用Python模拟出绽放的烟花#xff0c;工作之余也可以随时让程序为自己放一场烟花秀。python炫酷烟花表白源代码这个有趣的小项目并不复杂#xff0c;只需一点可视化技巧有没有想过代码也可以变得很酷炫又浪漫今天就教大家用Python模拟出绽放的烟花工作之余也可以随时让程序为自己放一场烟花秀。python炫酷烟花表白源代码这个有趣的小项目并不复杂只需一点可视化技巧100余行Python代码和程序库Tkinter最后我们就能达到下面这个效果学完本教程后你也能做出这样的烟花秀。整体概念梳理我们的整个理念比较简单。如上图示我们这里通过让画面上一个粒子分裂为X数量的粒子来模拟爆炸效果。粒子会发生“膨胀”意思是它们会以恒速移动且相互之间的角度相等。这样就能让我们以一个向外膨胀的圆圈形式模拟出烟花绽放的画面。经过一定时间后粒子会进入“自由落体”阶段也就是由于重力因素它们开始坠落到地面仿若绽放后熄灭的烟花。(推荐学习编程学习课程)基本知识用Python和Tkinter设计烟花这里不再一股脑把数学知识全丢出来我们边写代码边说理论。首先确保你安装和导入了Tkinter它是Python的标准 GUI 库广泛应用于各种各样的项目和程序开发在Python中使用 Tkinter 可以快速的创建 GUI 应用程序。import tkinter as tkfrom PIL import Image, ImageTkfrom time import time, sleepfrom random import choice, uniform, randintfrom math import sin, cos, radians除了Tkinter之外为了能让界面有漂亮的背景我们也导入PIL用于图像处理以及导入其它一些包比如timerandom和math。它们能让我们更容易的控制烟花粒子的运动轨迹。Tkinter应用的基本设置如下root tk.Tk()为了能初始化Tkinter我们必须创建一个Tk()根部件(root widget)它是一个窗口带有标题栏和由窗口管理器提供的其它装饰物。该根部件必须在我们创建其它小部件之前就创建完毕而且只能有一个根部件。w tk.Label(root, textHello Tkinter!)这一行代码包含了Label部件。该Label调用中的第一个参数就是父窗口的名字即我们这里用的“根”。关键字参数“text”指明显示的文字内容。你也可以调用其它小部件ButtonCanvas等等。w.pack()root.mainloop()接下来的这两行代码很重要。这里的打包方法是告诉Tkinter调整窗口大小以适应所用的小部件。窗口直到我们进入Tkinter事件循环被root.mainloop()调用时才会出现。在我们关闭窗口前脚本会一直在停留在事件循环。将烟花绽放转译成代码现在我们设计一个对象表示烟花事件中的每个粒子。每个粒子都会有一些重要的属性支配了它的外观和移动状况大小颜色位置速度等等。particles 类粒子在空中随机生成随机变成一个圈、下坠、消失属性:- id: 粒子的id- x, y: 粒子的坐标- vx, vy: 在坐标的变化速度- total: 总数- age: 粒子存在的时长- color: 颜色- cv: 画布- lifespan: 最高存在时长class part:def __init__(self, cv, idx, total, explosion_speed, x0., y0., vx 0., vy 0., size2., color red, lifespan 2, **kwargs):self.id idxself.x xself.y yself.initial_speed explosion_speedself.vx vxself.vy vyself.total totalself.age 0self.color colorself.cv cvself.cid self.cv.create_oval(x - size, y - size, x size,y size, fillself.color)self.lifespan lifespan如果我们回过头想想最开始的想法就会意识到必须确保每个烟花绽放的所有粒子必须经过3个不同的阶段即“膨胀”“坠落”和“消失”。 所以我们向粒子类中再添加一些运动函数如下所示def update(self, dt):# 粒子膨胀if self.alive() and self.expand():move_x cos(radians(self.id*360/self.total))*self.initial_speedmove_y sin(radians(self.id*360/self.total))*self.initial_speedself.vx move_x/(float(dt)*1000)self.vy move_y/(float(dt)*1000)self.cv.move(self.cid, move_x, move_y)# 以自由落体坠落elif self.alive():move_x cos(radians(self.id*360/self.total))# we technically dont need to update x, y because move will do the jobself.cv.move(self.cid, self.vx move_x, self.vyGRAVITY*dt)self.vy GRAVITY*dt# 如果粒子的生命周期已过就将其移除elif self.cid is not None:cv.delete(self.cid)self.cid None当然这也意味着我们必须定义每个粒子绽放多久、坠落多久。这部分需要我们多尝试一些参数才能达到最佳视觉效果。# 定义膨胀效果的时间帧def expand (self):return self.age 1.2# 检查粒子是否仍在生命周期内def alive(self):return self.age self.lifespan使用Tkinter模拟现在我们将粒子的移动概念化不过很明显一个烟花不能只有一个粒子一场烟花秀也不能只有一个烟花。我们下一步就是让Python和Tkinter以我们可控的方式向天上连续“发射”粒子。到了这里我们需要从操作一个粒子升级为在屏幕上展现多个烟花及每个烟花中的多个粒子。我们的解决思路如下创建一列列表每个子列表是一个烟花其包含一列粒子。每个列表中的例子有相同的x,y坐标、大小、颜色、初始速度。numb_explode randint(6,10)# 为所有模拟烟花绽放的全部粒子创建一列列表for point in range(numb_explode):objects []x_cordi randint(50,550)y_cordi randint(50, 150)size uniform (0.5,3)color choice(colors)explosion_speed uniform(0.2, 1)total_particles randint(10,50)for i in range(1,total_particles):r part(cv, idx i, total total_particles, explosion_speed explosion_speed, x x_cordi, y y_cordi,colorcolor, 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秒处于Tkinter将其完全移除前的边缘状态)。total_time .0# 在1.8秒时间帧内保持更新while total_time 1.8:sleep(0.01)tnew time()t, dt tnew, tnew - tfor point in explode_points:for part in point:part.update(dt)cv.update()total_time dt现在我们只需将最后两个gist合并为一个能被Tkinter调用的函数就叫它simulate()吧。该函数会展示所有的数据项并根据我们设置的时间更新每个数据项的属性。在我们的主代码中我们会用一个alarm处理模块after()调用此函数after()会等待一定的时间然后再调用函数。我们这里设置让Tkinter等待100个单位(1秒钟)再调取simulate。if __name__ __main__:root tk.Tk()cv tk.Canvas(root, height600, width600)# 绘制一个黑色背景cv.create_rectangle(0, 0, 600, 600, fillblack)cv.pack()root.protocol(WM_DELETE_WINDOW, close)# 在1秒后才开始调用stimulate()root.after(100, simulate, cv)root.mainloop()好了这样我们就用Python代码放了一场烟花秀本文只一个简单版本等进一步熟悉Tkinter后还可以添加更多颜色更漂亮的背景照片让代码为你绽放更美的烟花以下是全部代码import tkinter as tkfrom PIL import Image, ImageTkfrom time import time, sleepfrom random import choice, uniform, randintfrom math import sin, 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: 最高存在时长class Particle:def __init__(self, cv, idx, total, explosion_speed, x0., y0., vx0., vy0., size2., colorred, lifespan2,**kwargs):self.id idxself.x xself.y yself.initial_speed explosion_speedself.vx vxself.vy vyself.total totalself.age 0self.color colorself.cv cvself.cid self.cv.create_oval(x - size, y - size, x size,y size, fillself.color)self.lifespan lifespandef update(self, dt):self.age dt# 粒子范围扩大if self.alive() and self.expand():move_x cos(radians(self.id * 360 / self.total)) * self.initial_speedmove_y sin(radians(self.id * 360 / self.total)) * self.initial_speedself.cv.move(self.cid, move_x, move_y)self.vx move_x / (float(dt) * 1000)# 以自由落体坠落elif self.alive():move_x cos(radians(self.id * 360 / self.total))# we technically dont need to update x, y because move will do the jobself.cv.move(self.cid, self.vx move_x, self.vy GRAVITY * dt)self.vy GRAVITY * dt# 移除超过最高时长的粒子elif self.cid is not None:cv.delete(self.cid)self.cid None# 扩大的时间def expand (self):return self.age 1.2# 粒子是否在最高存在时长内def alive(self):return self.age self.lifespan循环调用保持不停def simulate(cv):t time()explode_points []wait_time randint(10, 100)numb_explode randint(6, 10)# 创建一个所有粒子同时扩大的二维列表for point in range(numb_explode):objects []x_cordi randint(50, 550)y_cordi randint(50, 150)speed uniform(0.5, 1.5)size uniform(0.5, 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, idxi, totaltotal_particles, explosion_speedexplosion_speed, xx_cordi, yy_cordi,vxspeed, vyspeed, colorcolor, sizesize, lifespanuniform(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 in explode_points:for item in point:item.update(dt)cv.update()total_time dt# 循环调用root.after(wait_time, simulate, cv)def close(*ignore):退出程序、关闭窗口global rootroot.quit()if __name__ __main__:root tk.Tk()cv tk.Canvas(root, height400, width600)# 选一个好看的背景会让效果更惊艳image Image.open(./image.jpg)photo ImageTk.PhotoImage(image)cv.create_image(0, 0, imagephoto, anchornw)cv.pack()root.protocol(WM_DELETE_WINDOW, close)root.after(100, simulate, cv)root.mainloop()众多python培训视频尽在python学习网欢迎在线学习
http://www.zqtcl.cn/news/97128/

相关文章:

  • 桂阳做网站的软件定制开发外包wordpress电子商务插件
  • 10有免费建网站那些公司做网站比较厉害
  • 网站关键词优化推广旅游类网站开发开题报告范文
  • 官方网站营销拟在建项目信息网官网
  • 沈阳做微信和网站的公司湛江网站建设公司哪家好
  • 网站 开发逻辑电话销售电销系统
  • 有哪些做兼职的设计网站有哪些工作可以用asp做哪些网站
  • 装修网站推广方案东莞网站建设0086
  • 知名营销网站开发高端网站建设如何收费
  • 佛山网站建设邓先生沈阳做网站找黑酷科技
  • 网站建设 排名下拉请教个人主页网站怎么做啊
  • 揭阳网站制作教程安阳seo公司
  • 网站运营管理教材wordpress 评论框插件
  • 免费做手机网站有哪些网页怎么制作链接
  • 浙江省建设工程质量协会网站wordpress只在首页设置关键词
  • 网站开发选题申请理由东莞网站建议
  • 阿里巴巴国际站运营培训商务网站的建设步骤
  • 有哪几个平台做网站专业的网站建设流程
  • 网站的回到顶部怎么做字体艺术设计在线生成
  • 物流营销型网站案例分析渭南专业做网站
  • 织梦音乐网站接推广任务的平台
  • 网站建设设计团队平面设计主要做什么ui
  • 站长工具seo综合查询广告和京东一样的网站
  • 柳州做网站的企业做黑彩网站
  • 商城网站开发那家好网站建设知识平台
  • 莱州网站定制flash网站cms
  • 经营范围里的网站建设直播系统程序
  • 58同城类似的网站开发wordpress 地方生活
  • wordpress 七牛ossseo系统
  • 郑州做网站 熊掌号太原今天最新通知