跨年快乐!🎆 2026年已经过去两个月了,但烟花永不过时~
用 Python 快速实现一个绚丽的跨年烟花动画,最简单上手的是 turtle 库(Python内置,无需额外安装),适合新手/快速演示。下面给你一个完整、可直接复制运行的版本,包含:
- 黑色夜空背景
- 随机发射的火箭
- 绽放的多色粒子烟花(带重力下落 + 渐隐效果)
- 循环播放,永不停止(直到你关窗口)
import turtle
import random
import time
# 设置屏幕
screen = turtle.Screen()
screen.bgcolor("black")
screen.title("Happy New Year 2026! 🎆 跨年烟花秀")
screen.setup(width=1000, height=700)
screen.tracer(0) # 关闭自动刷新,手动控制更流畅
# 颜色池(烟花常用色)
colors = ["red", "orange", "yellow", "lime", "cyan", "blue", "purple", "magenta", "white", "pink"]
class Firework:
def __init__(self):
self.particles = []
self.exploded = False
# 随机发射位置(底部随机)
x = random.randint(-400, 400)
self.rocket = turtle.Turtle()
self.rocket.shape("circle")
self.rocket.shapesize(0.3)
self.rocket.color(random.choice(colors))
self.rocket.penup()
self.rocket.goto(x, -350)
self.rocket.speed(0)
# 目标爆炸高度
self.target_y = random.randint(50, 250)
self.color = self.rocket.color()[0]
def launch(self):
if self.rocket.ycor() < self.target_y:
self.rocket.sety(self.rocket.ycor() + random.uniform(4, 8)) # 上升速度随机
# 尾迹小效果(可选)
if random.random() < 0.1:
trail = turtle.Turtle()
trail.shape("circle")
trail.shapesize(0.1)
trail.color(self.color)
trail.penup()
trail.goto(self.rocket.position())
trail.hideturtle() # 很快消失
screen.ontimer(trail.hideturtle, 300)
else:
self.explode()
def explode(self):
self.exploded = True
self.rocket.hideturtle()
# 爆炸粒子数(越大越绚丽,但越卡)
num_particles = random.randint(40, 80)
for _ in range(num_particles):
p = turtle.Turtle()
p.shape("circle")
p.shapesize(0.15)
p.color(self.color)
p.penup()
p.goto(self.rocket.position())
p.dx = random.uniform(-5, 5)
p.dy = random.uniform(-2, 8) # 上抛
p.brightness = 1.0
self.particles.append(p)
def update(self):
if not self.exploded:
self.launch()
else:
new_particles = []
for p in self.particles:
p.setx(p.xcor() + p.dx)
p.sety(p.ycor() + p.dy)
p.dy -= 0.15 # 重力
p.brightness -= 0.015
if p.brightness > 0:
# 渐隐:颜色变暗
r, g, b = [int(c * p.brightness) for c in p.color()]
p.color(f"#{r:02x}{g:02x}{b:02x}")
new_particles.append(p)
else:
p.hideturtle()
self.particles = new_particles
# 创建初始一批烟花
fireworks = [Firework() for _ in range(4)]
# 添加新年文字(可选,居中显示)
writer = turtle.Turtle()
writer.hideturtle()
writer.color("gold")
writer.penup()
writer.goto(0, 200)
writer.write("Happy New Year 2026!", align="center", font=("Arial", 40, "bold"))
# 主循环
while True:
screen.update()
time.sleep(0.02) # 控制帧率,防太快卡顿
for fw in fireworks[:]:
fw.update()
# 如果烟花完全消失,补充新的
if fw.exploded and not fw.particles:
fireworks.remove(fw)
fireworks.append(Firework())
# 偶尔添加额外烟花增加密度
if random.random() < 0.03:
fireworks.append(Firework())
# 关闭窗口优雅退出
screen.exitonclick()
运行方式
- 复制代码到
.py文件(如newyear_fireworks.py) - 用 Python 运行(推荐 3.8+)
- 全屏享受!(按 Esc 或关闭窗口退出)
进阶玩法建议(想更炫?)
- 加倒计时:用
datetime计算到下一个跨年时间,显示剩余秒数。 - 加音乐:用
pygame.mixer播放跨年BGM(需 pip install pygame)。 - 升级版用 Pygame:粒子更多、更丝滑,支持鼠标交互发射烟花。
- 3D版:用 Ursina 或 PyOpenGL(更复杂,但效果炸裂)。
想加倒计时、背景音乐、还是改成2027版?或者要 Pygame 版本的完整代码?告诉我,我再给你升级~ 新年虽过,烟花不灭!🚀