以下是一个使用 Python 的turtle
库实现的烟花动画程序示例:
收起
python
复制
import turtle
import random
import time
# 创建画布
screen = turtle.Screen()
screen.bgcolor("black")
screen.title("Fireworks Animation")
# 烟花颜色列表
colors = ["red", "orange", "yellow", "green", "blue", "purple"]
# 发射烟花函数
def firework(x, y):
pen = turtle.Turtle()
pen.hideturtle()
pen.speed(0)
pen.penup()
pen.goto(x, y)
pen.pendown()
color = random.choice(colors)
pen.color(color)
for i in range(30):
pen.forward(i * 2)
pen.right(144)
explosion(pen.xcor(), pen.ycor(), color)
# 烟花爆炸效果函数
def explosion(x, y, color):
particles = []
for i in range(30):
particle = turtle.Turtle()
particle.hideturtle()
particle.speed(0)
particle.penup()
particle.goto(x, y)
particle.pendown()
particle.color(color)
angle = random.randint(0, 360)
distance = random.randint(10, 50)
particle.setheading(angle)
particle.forward(distance)
particles.append(particle)
for _ in range(10):
for particle in particles:
particle.forward(5)
# 绑定鼠标点击事件来触发烟花
screen.onclick(firework)
# 主循环
while True:
screen.update()
time.sleep(0.1)
在这个程序中:
初始化部分:
- 首先创建了一个
turtle
屏幕对象screen
,将背景颜色设置为黑色,并设置了标题。 - 定义了一个包含多种颜色的列表
colors
,用于烟花的颜色选择。
烟花发射和爆炸函数:
firework
函数用于发射一个烟花。当调用该函数时,它会在指定的(x, y)
坐标处创建一个turtle
对象作为烟花。烟花的颜色是从colors
列表中随机选择的,然后通过循环绘制出烟花上升的轨迹(这里是一个简单的多边形)。之后调用explosion
函数在烟花的顶部位置产生爆炸效果。explosion
函数用于创建烟花爆炸的效果。它在给定的坐标(x, y)
处创建多个turtle
对象作为烟花爆炸的粒子,每个粒子有随机的方向和距离,然后通过循环让这些粒子向外扩散,模拟爆炸的视觉效果。
事件绑定和主循环:
- 将
firework
函数绑定到鼠标点击事件上,这样每次点击鼠标时就会发射一个烟花。 - 在主循环中,不断更新屏幕以显示动画效果,并添加了一个小的时间延迟
0.1
秒,以控制动画的帧率和流畅度