Python烟花编程教程:Tkinter实现烟花效果

创始人
2024-12-16 11:28:37
0 次浏览
0 评论

烟花代码编程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()调用时,该窗口才会出现。
该脚本将保留在事件循环中,直到我们关闭窗口。

将烟花花朵转化为符号

我们现在设计一个代表烟花事件中每个粒子的对象。
每个粒子都有一些控制其外观和运动的重要属性:大小、颜色、位置、速度等。

2022年新年的烟花符号|。
用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编写自幂数程序

#-*-programming:utf-8-*-importmath'''自主求幂是指n位数字,每个数字上的数字是n次力的总和等于其本身。
例:当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()

文章标签:
烟花 Python
热门文章
1
Python编程入门:全面解析Pytho... python的基本语法基本的Python语法如下:1.变量的定义。在编程语言中,...

2
Python字典操作全解析:添加、修改、... Pythondict字典基本操作(包括添加、修改、删除键...

3
Python错误处理与异常处理:构建稳定... 2.5错误处理与异常在编程领域,错误处理和异常处理是保证程序稳定性和健壮性的关键...

4
Python数据转换攻略:字符串、列表、... Python字典、字符串及列表的相互转换Python中数据转换的艺术:从字典和字...

5
Python列表相加与求和技巧解析 重温python基础:列表相加的方法(两个list[]加法)今天,我们来看看Py...

6
Python运行快捷键大揭秘:高效操作,... python运行按哪个键运行Python时的快捷键包括Ctrl+Shift+F1...

7
Python字符与数字互转攻略:轻松掌握... python 字符与数字如何转换Python是一种功能强大且结...

8
Python字符串转列表:两种常用方法解... python怎么将字符串转换为列表Python中将字符串转换为列表的方法有多种,...

9
Python字符串转列表:两种常用方法解... python怎么将字符串转换为列表在Python中将字符串转换为列表的方法有很多...

10
Python列表转字符串全攻略:掌握四种... Python列表到字符串–如何在Python中转换列表在Python中,将列表转...