用Python制做烟花python
(星空图片)web
(月亮图片)
编程
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)
你们知道,燃放烟花是从点燃炮竹开始的,当炮竹上升到必定的高度后,引擎被点燃,而后烟花会被炸裂出来。因此接下来,咱们要绘制炮竹。咱们的炮竹形状计划就采用长方形,这种形状正好能够采用画笔的形状‘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)
注意,最后的代码
app
firecracker.shapesize(0.2,0.8)dom
接下来开始说重点,来介绍一下如何制做烟花。制做烟花是本文的重点。编辑器
由上图容易看出,烟花其实能够当作由一些形状类似的图形汇集在一块儿构成的。其原理是,首先将形状类似的同类图形汇集在一块儿,而后,短期内向四周炸开。据此,咱们也采用相似的方法。与以上炮竹的制做相似,咱们这里也利用turtle的画笔形状做为烟花的基本形状,代码以下。ide
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汇集在一块儿,并短期炸开。具体代码以下。flex
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)
好了,最后,小编录制了一段视频,让咱们在如下绽开烟花的视频下结束今天的文章。再次祝你们新年快乐,平平安安,大吉大利过大年!
-end-
Python 青少年编程

本文分享自微信公众号 - python 青少年编程(gh_73f62b58c679)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。