Python烟花编程教程:Tkinter实现烟花效果
烟花代码编程python(玫瑰花代码编程python)
烟花点火代码#-*-coding:utf-8-*-importmath,random,timeimportthreadingimporttkinterastkimportreuuidFireworks=[]maxFireworks=8height,width=600,600classfirework(object):def__init__(self,color,speed,width,height):=uuid.uuid1()self.radius=random.randint(2,4)~4像素self.color=colorself.speed=speed.5-3.5秒self.status=0,status=0;爆炸后,state=1;当状态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]
Python《奇妙烟花告白》的源代码是什么?完成本教程后,您还可以创建像这样的烟花表演。
如上图所示,我们通过将屏幕上的粒子分割成X个粒子来模拟爆炸效果。
粒子“膨胀”,这意味着它们以恒定的速度且彼此以相等的角度移动。
这将使我们能够以不断扩大的圆圈的形式模拟烟花表演。
经过一定时间后,分子将进入“自由落体”阶段,这意味着它们将开始由于重力而落到地面,就像烟花绽放然后熄灭。
基础知识:使用Python和Tkinter进行Fireworks设计。
我们不再在这里抛弃所有的数学知识,我们在编写代码的同时谈论理论。
首先,确保您已经安装并导入了Tkinter,它是Python的标准GUI库,广泛应用于各种项目和软件开发中。
在Python中使用Tkinter可以快速创建GUI应用程序。
importtkinterastk
fromPILimportImage,ImageTk
fromtimeimporttime,sleep
fromrandomimportchoice,uniform,randint
frommathimportsin,cos,radians
除了Tkinter之外,为了让界面有漂亮的背景,我们还导入了PIL进行图像处理,以及其他一些元素包,例如时间、随机性和数学。
它使我们能够更轻松地控制烟花粒子的路径。
Tkinter应用程序的基本设置如下:
root=tk.Tk()
要配置Tkinter,我们必须创建Tk()根组件(rootwidget),它是一个包含标题栏和窗口管理器提供的其他装饰的窗口。
这个根widget必须在创建其他widget之前创建,并且只能有一个根widget。
w=tk.Label(root,text="HelloTkinter!")
这行代码包含标签组件。
命名调用中的第一个参数是主窗口的名称,也就是我们这里使用的“root”。
指定一个参数关键字“text”要显示的文本内容。
您还可以调用其他UI元素:Button、Canvas等。
w.pack()
root.mainloop()
接下来的两行代码很重要。
这里的包装方法是告诉Tkinter调整窗口大小以适合正在使用的小部件。
直到我们进入Tkinter事件循环并且由root.mainloop()调用时,该窗口才会出现。
该脚本将保留在事件循环中,直到我们关闭窗口。
将烟花花朵转化为符号
我们现在设计一个代表烟花事件中每个粒子的对象。
每个粒子都有一些控制其外观和运动的重要属性:大小、颜色、位置、速度等。
用Python给你看一场跨年烟花表演
2021年即将结束,2022年即将到来,这篇文章我们用Python给你看一场跨年烟花表演。
我们使用的Python模块包括:tkinter、PIL、time、random和math。
如果没有安装第三方模块,只需安装即可。
指南库
烟花颜色
定义烟花类别
点燃烟花
开始
看看效果:
2022年除夕烟花图标
烟花图标可以复制为以下内容:
packagelove;
importjava.applet.Applet;
importjava.awt.Color;
导入tjava.awt。
图形;
importjava.net.URL;
importjava.util.Random;
Fireworks
@authorenjoy
@SuppressWarnings("serial")
publicclassQextendsAppletimplementsRunnable
publicintspeed,variability,Max_Number,Max_Energy,Max_Patch,
Max_Length,G;
publicStringsound;
privateintwidth,height;
privateThreadthread=null;
privateBeaClassDemobcd[];
publicvoidinit()?
inti;
这个。
e(1900,900);
width=getSize().width-1;
height=getSize().height-1;
speed=1;//烟花爆竹声Speed
Contrast=10;
Max_Number=980;//最多可以发射的烟花数量发射数量
Max_Energy=width+50;
Max_Patchh=90;?//最大数量位置
Max_Length=90;??//最大光斑距离
G=150;//地面弯曲力
bcd=newBeaClassDemo[Max_Number];
for(i=0;iMax_Number;i++)
bcd[i]=newBeaClassDemo(宽度,height,G);
}
publicvoidstart(){
if(thread==null){
thread=newThread(this);
thread.start();
}
}
@SuppressWarnings("弃用")
publicvoidstop(){
if(thread!=null){
thread.stop();
thread=null;
}
}
@SuppressWarnings({"unused",static-access"})
publicvoidrun(){
inti;
intE=(int)(Math.random()*Max_Energy*3/4)+Max_Energy/4+1;
intP=(int)(Math.random()*Max_Patch*3/4)?//烟花补丁Number
+Max_Patch/4+1;
intL=(int)(Math.random()*Max_Length*3/4)?//烟花可发射距离
+Max_Length/4+1;
longS=(long)(Math.random()*10000);
booleansleep;
Graphicsg=getGraphics();
URLu=null;
虽然(真){
尝试{
thread.sleep(1000/speed);
catch(InterruptedExceptionx){
sleep=true;
for(i=0;iMax_Number;i++)
sleep=sleepbcd[i].sleep;
if(sleepMath.random()*100variability){
E=(int)(数学.random()*Max_Energy*3/4)+Max_Energy/4
+1;
P=(int)(Math.random()*Max_Patch*3/4)+Max_Patch/4
+1;
L=(int)(Math.random()*Max_Length*3/4)+Max_Length/4
+1;
S=(long)(Math.random()*10000);
对于(i=0;iMax_Number;i++){
if(bcd[i.sleepMath.random()*Max_Number*L1)
bcd[i].init(E,P,L,S);
bcd[i].start();
bcd[i].show(g);
一般voidpaint(Graphicsg)
g.setColor(Color.black);
g.fillRect(0,0,width)+1,height+1));
classBeaClass演示
publicbooleansleep=true;
能量特殊,校正,长度,宽度,高度,G,Xx,Xy,Ex[],Ey[],x,
y,Red,Butue,Green,t;
privateRandomrandom;
publicBeaClassDemo(inta,intb,intg)
宽度=a;
高度=b;
G=g;
publicvoidinit(inte,intp,intl,longseed)?
inti;
energy=e;
patch=p;
length=l;
//创建随机数生成器分类
random=newRandom(seed);
Ex=newint[patch];
Ey=newint[patch];
红色=(int)(随机.下一个Double()*128)+128;
蓝色=(int)(random.nextDouble()*128)+128;
绿色=(int)(random.nextDouble())*128)+128;
Xx=(int)(Math.random()*width/2)+width/4;
for(i=0;ipatch;i++){
Ex[i]=(int)(Math.random()*energy)-energy/2;
Ey[i]=(int)(Math.random()*energy*7/8)-能源/8;
publicvoidstart
t=0;
sleep=false;
publicvoidshow(Graphicsg)?
inti,c;
双;
Colorcolor;
c=(int)(random.nextDouble()*64)-32+红色;
if(c=0c256)
红色=c;
c=(int)(random.nextDouble()*64)-32+蓝色;
if(c=0c256)
蓝色=c;
c=(int)(random.nextDouble()*64)-32+绿色;
if(c=0c256)
绿色=c;
color=newColor(红、蓝、绿);
for(i=0;ipatch;i++)
s=(double)t/100;
x=(int)(Ex[i]*s);
y=(int)(Ey[i]*s-G*s*s);
g.setColor(颜色);
g.drawLine(Xx+x,Xy-y,Xx+x,Xy-y);
if(t=length/2)
intj;
for(j=0;j2;j++)
intj;
for(j=0;j2;j++)
s=(double)((t-length/2)*2+j)/100;x=(int)(Ex[i]*s);
y=(int)(Ey[i]*s-G*s*s);
g.setColor(Color.black);
g.drawLine(Xx+x,Xy-y,Xx+x,Xy-y);常用编程语言。
编程语言1:C
C是世界上最著名、使用最广泛的高级编程语言之一。
在操作系统和系统使用程序中以及在需要它们的情况下硬件运行上,C明显优于其他高级语言,因为很多大型应用程序都是用C编写的。
编程语言2:Java
Java是一种编程语言面向对象,可以编写跨平台应用程序,是SunMicrosystems于1995年5月推出的Java程序。
通用术语,指Java的设计语言和平台(如JavaSE、JavaEE和JavaME)。
第三种编程语言:c++
C++在中国大陆程序员圈子里通常读作“Cplusplus”,而西方程序员通常读作“Cplusplus””党柬埔寨人”。
它是一种使用非常广泛的计算机编程语言。
C++是一种通用编程语言,具有静态数据类型检查并支持多种编程范式。
用python编写自幂数程序
例:当n为3时,有1^3+5^3+3^3=153,153是一个自指数数,当n3'''n=int(input("请输入自指数number求幂位数:\n"))ifn==1:print"单个数:"print"0\t"elifn==2:print"两位数幂数:"print"不是自指数数!"elifn==3:print"水仙花的数量:"elifn==4:print"玫瑰花的数量:"elifn==5:print"数量五芒星的个数:"elifn==6:print"六种组合的个数:"elifn==7:print"北斗七星的个数:"elif#定义一个从10^(n-1)开始并自行增加并以10^n结束的数字foriinrange(int(math.pow(10,n-1)),int(math.pow(10,n))):num=0forjinstr(i):num+=int(math.pow(int(j),n))ifi==num:printi
执行结果:
请输入要检查的幂位数:
3
水仙花数量:
153
370
371
407
python怎么画玫瑰花
有很多命令可以控制如何绘制乌龟。
这些命令可以分为两种:一种是移动命令,另一种是画笔控制命令。
1.移动命令:向前(度)#向前移动代表距离的度数。
distanceback(degs)#向后移动度数表示向右移动的距离(degs)#向右移动多少度left(degs)#向左移动多少度goto(x,y)#将画笔移动到某个位置其中坐标为x,ystamp()#复制当前绘制速度(speed)#画笔绘制速度Range[0,10]integer2.控制命令Brush:down()#移动shape时绘制,默认也是向上绘制()#移动时不绘制图形pensize(width)#绘制图形时的宽度color(colorstring)#绘制图形时的颜色fillcolor(colorstring)#填充颜色可绘制图形填充(真)填充(假)
露西:梦想成真;露西;青春风范;
draw_flower1.py
[python]viewplain复制
#-*-编码:cp936-*-
导入海龟
导入数学
defp_line(t,n,length,angle):
"""绘制n条线段."""
对于i在范围(n)内:
t.fd(长度)
t.lt(角度)
def多边形(t,n,length):
"""绘制一个有n条边的多边形。
"""
angle=360/n
p_line(t,n,长度,角度)
defarc(t,r,angle):
"""以指定的半径和角度绘制圆弧。
"""
arc_length=2*math.pi*r*abs(angle)/360
n=int(arc_length/4)+1
step_length=arc_length/n
step_angle=float(角度)/n
#开始之前,我们先向左轻微转向减速
t.lt(step_angle/2)
p_line(t,n,步长,步长角度)
t.rt(step_angle/2)
defpetal(t,r,角度):
“”“给我们画了一片花瓣,创造了两个arc."""
foriinrange(2):
arc(t,r,角度)
t.lt(180-angle)
defflower(t,n,r,Angular,p):
"""画一朵有n个花瓣的花。
"""
对于范围(n)内的i:
花瓣(t,r,角度)
t.lt(p/n)
defLeaf(t,r,角度,P):
"""绘制一片叶子并填充它。
"""
t.begin_fill()#开始填充过程
t.down()
花(t、1、40、80、180)
t.end_fill()
defmain():
window=turtle.Screen()#创建屏幕
window.bgcolor("blue")
lucy=turtle.Turtle()
lucy.shape(“乌龟”)
lucy.color(“红色”)
lucy.width(5)
lucy.speed(0)
#画一朵花
花(lucy,7,60,100,360)
#绘制花序梗
lucy.color("brown")
lucy.rt(90)
lucy.fd(200)
#绘图表
lucy.rt(270)
lucy.color("绿色")
叶子(lucy,40,80,180)
lucy.ht()
window.exitonclick()
main()