放烟花的代码

放烟花的代码,第1张

# -*- coding: utf-8 -*-import math, random,timeimport threadingimport tkinter as tkimport re uuidFireworks=[]maxFireworks=8height,width=600,600class firework(object):def __init__(self,color,speed,width,height):=uuid.uuid1()self.radius=random.randint(2,4) ~4像素self.color=color self.speed=speed .5-3.5秒self.status=0 ,status=0;爆炸后,status>=1;谨袜孝当status>100时,烟花的生命期终祥稿止self.nParticle=random.randint(20,30) self.center=[random.randint(0,width-1),random.randint(0,height-1)] self.oneParticle=[](好氏100%状态时)self.rotTheta=random.uniform(0,2*math.pi) :x=a*cos(theta),y=b*sin(theta)=[a,b]

学完本教程后,你也能做出这样的烟花秀。

如上图示,我们这里通过让画面上一个粒子分裂宽雀笑为X数量的粒子来模拟爆炸效果。粒子会发生"膨胀”,意思是它们会以恒速移动且相互之间的角度相等。这样就能让我们以一个向外膨胀的圆圈形式模拟出烟花绽放的画面。

经过一定时间后,粒子会进入"自由落体”阶段,也就是由于重力因素它们开始坠落到地面,仿若绽放后熄灭的烟花。

基本知识:用Python和Tkinter设计烟花。

这里不再一股脑把数学知识全丢出来,我们边写代码边说理论。首先,确保你安装和导入了Tkinter,它是Python的标准GUI库,广泛应用于各种各样的项目和程序开发,在Python中使用Tkinter可以快速的创建GUI应用程序。

import tkinter as tk

from PIL import Image, ImageTk

from time import time, sleep

from random import choice, uniform, randint

from math import sin, cos, radians

除了Tkinter之外,为了能让界面有漂亮的背景,我们也导入PIL用于图像处理,以及导入其它一些包,比如time,random和math。它们能让我们更容易的控制烟花粒子的运动轨迹。

Tkinter应用的基本设置如下:

root = tk.Tk()

为了能初始化Tkinter,我们必须创建一个Tk()根部件(root widget),它是一个窗口,带有标题栏和由窗口管理器提供的其它装饰物。该根部件必须在我们创建其它小部件之前就创建完毕,而且只能有一个根部件。

w = tk.Label(root, text="岁腊Hello Tkinter!")

这一行代码包含了Label部件。该Label调用中的第一个参数就是父窗口的名字,即我们这里用的"根”。关键字参数"text”指明显示的文字内容。你也可以调用其它小部件:Button,Canvas等等。

w.pack()

root.mainloop()

接下来的这两行代码很重要。这里的打包方法是告诉Tkinter调整窗口大小以适应所用的小部件。窗口直到我们进入Tkinter事件循环,被root.mainloop()调用时才会出现。在我们关闭窗口前,脚本会一直在停留在事件循环。

将烟花绽放转译成代码

现在我们设计一个对象,表示烟花慎含事件中的每个粒子。每个粒子都会有一些重要的属性,支配了它的外观和移动状况:大小,颜色,位置,速度等等。

1.使用IDLE运行python程序

IDLE全称“Integrated Development and Learning Environment”,是python的集成开发和学习环境。它被打包为python包装的可选部分,当安装好python以后,IDLE就自动安装好了,不需要另外去安装。使用IDLE运行python程序方迟察法盯樱如下:凯旦丛

2.实例:用IDLE编写第一个python程序

(1)运行IDLE开发环境。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12461423.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存