栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

用Python做一场灿烂烟花——无污染又浪漫~实现烟花自由

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

用Python做一场灿烂烟花——无污染又浪漫~实现烟花自由

导语:你有多久没看过一场烟花了?

还有15天2021就结束啦~跨年那天不知道各位铁汁们会跟谁一起过呢?话说跨年你们都是怎么过的?小编记得去年是和室友们看了夜场的电影送你一朵小红花,看完就是11点啦准备打车回去的时候听到路边有人说江边零点会开始放烟花跨年~于是我们几个就屁颠屁颠赶去~來

可算是在零点看到了一场灿烂烟花~小时候每年跨年都是要买一堆各式各样的烟花发的,仙女棒~冲天炮年年都玩不腻。可是后来污染实在是太严重,小孩放烟花的安全隐患又频频爆出

各大地方就出了政策明例禁止放烟花~烟花的缺失着实让节日少了许多欢乐与烟火气息!!

 今年小编本来打算五一去橘子洲头看一场盛世烟花~可无奈因为疫情终究还是没有去成~

 

小编想到肯定还有很多想看烟花终究没实现的友友们~于是就打算出这期啦~珞

代码跟文案往下滑哦~想领取更多完整源码或python学习资料可私信我或点击这行字体

文案:

若你爱盛世烟花,我便为你倾尽繁华。若你爱江山如画,我便为你覆尽天下

看烟花,多繁华,空萧玉冷竟无家,寒萧索,梦胡沙,犹记春风呓语花。

升起的烟花,是从下面看还是从侧面看,你在看烟花,我在看你。

你是我今生看过的最盛大的一场烟火,也是烟花过后最刻骨铭心的一场寂寞

 附代码:

准备好了吗,我们开始动手吧!用Python的海龟库(turtle库)制作烟花的过程大致如下。

1.首先制作一个绚丽的夜空

制作夜空,其实就是设置画布。大家知道,夜晚的天空月明如水,星光攒动,绚丽至极。如果把所有的夜空景象都用turtle库绘制出来确实非常的费时、费力。而且,绘制月亮、繁星这些景色本身也不是我们本篇文章的终点。因此,在夜空制作这一块,我们讨了个巧,是选用背景图片来实现的,如下图。

(星空图片)

(月亮图片)

好了,照片选用完毕后,下面开始用代码来制作夜空,具体如下。

import turtle
wn=turtle.Screen()
wn.colormode(255)
wn.bgpic('星光back.gif')
wn.setup(1920,1080)
wn.register_shape('月亮.gif')
wn.register_shape('星光.gif')
wn.register_shape('liuxing.gif')
#月亮
moon=turtle.Turtle()
moon.shape('月亮.gif')
moon.shapesize(0.2,0.2)
moon.up()
moon.goto(-400,250)

运行后,效果如下图所示。

2.接下来制作一个炮竹

大家知道,燃放烟花是从点燃炮竹开始的,当炮竹上升到一定的高度后,引擎被点燃,然后烟花会被炸裂出来。所以接下来,我们要绘制炮竹。我们的炮竹形状计划就采用长方形,这种形状正好可以采用画笔的形状‘square’。具体代码如下。

#炮竹
firecracker=turtle.Turtle()
firecracker.up()
firecracker.goto(0,-200)
firecracker.lt(90)
firecracker.speed('fastest')
firecracker.color('white')
firecracker.shape('square')
firecracker.shapesize(0.2,0.8)

 注意,最后的代码

firecracker.shapesize(0.2,0.8)

3.来制作烟花

接下来开始说重点,来介绍一下如何制作烟花。制作烟花是本文的重点。

由上图容易看出,烟花其实可以看成由一些形状相似的图形聚集在一起构成的。其原理是,首先将形状相似的同类图形聚集在一起,然后,短时间内向四周炸开。据此,我们也采用类似的方法。与以上炮竹的制作类似,我们这里也利用turtle的画笔形状作为烟花的基本形状,代码如下。

firworks=[]
shape=['circle','classic','square','triangle','arrow','turtle']
for i in range(25):
    newfirework=turtle.Turtle()
    newfirework.speed('fastest')
    newfirework.up()
    newfirework.ht()
    newfirework.shape('circle')
    newfirework.shapesize(0.5,2.5)
    firworks.append(newfirework)

 容易看出,以上代码中,将烟花在Python中被定义为一组形状相同的画笔列表firworks。

好了,炮竹与烟花都有了,接下来,我们计划让二者协同工作,即,首先让炮竹firecracker向上运行一段,当倒达一定高度后让烟花firworks聚集在一起,并短时间炸开。具体代码如下。

while True:
    high=200
    wn.update()
    firecracker.fd(10)
    for firework in firworks:
        firework.fd(60)
    if firecracker.ycor()==high:
        color = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))
        for firework in firworks:
            firework.color(color)
            firework.goto(firecracker.xcor(),firecracker.ycor())
            firework.seth(random.randint(0, 360))
            firework.showturtle()
    if firecracker.ycor() >= high+5:
        firecracker.goto(0,-200)
    time.sleep(0.05)

以上代码是一无限循环,每次循环首先让炮竹firecracker上升一段,当到达一定高度后让烟花firework聚集在一起,然后向四周迅速炸开。运行效果如下。

接下来,调整以上代码,加入函数

def set_firworks_shape(apperance):
    for firework in firworks:
        firework.shape(apperance)

 让烟花的形状随机发生变化,并加入以下代码

firecracker.goto(random.randint(0, 500),-200)

让烟花每次炸完后将炮竹随机换位置。

while True:
    high=200
    wn.update()
    firecracker.fd(10)
    for firework in firworks:
        firework.fd(60)
    if firecracker.ycor()==high:
        color = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))
        for firework in firworks:
            firework.color(color)
            firework.goto(firecracker.xcor(),firecracker.ycor())
            firework.seth(random.randint(0, 360))
            firework.showturtle()
    if firecracker.ycor() >= high+5:
        firecracker.goto(random.randint(0, 500),-200)
        set_firworks_shape(random.choice(shape))
    time.sleep(0.05)

运行后结果如下:

用Python做的烟花代码

end: 这期烟花代码分享就到这里咯~友友们喜欢的话还可以发送给喜欢的人啦~跨年那天一起倒计时看一场烟花简直不要太浪漫~~

喜欢的小可爱们记得三连噢~~家人们的支持是小编更新最大的动力!!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/664337.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号