Python新春烟花代码

系列文章

|--------|------------------------------------------------------------------------------------------------------|
| 序号 | 直达链接 |
| 爱心系列 ||
| 1 | Python制作一个无法拒绝的表白界面 |
| 2 | Python满屏飘字表白代码 |
| 3 | Python无限弹窗满屏表白代码 |
| 4 | Python李峋同款可写字版跳动的爱心 |
| 5 | Python流星雨代码 |
| 6 | Python漂浮爱心代码 |
| 7 | Python爱心光波代码 |
| 8 | Python普通的玫瑰花代码 |
| 9 | Python炫酷的玫瑰花代码 |
| 10 | Python多彩的玫瑰花代码 |
| 节日系列 ||
| 1 | Python动漫风烟花秀代码 |
| 2 | Python新年烟花秀代码 |
| 3 | Python圣诞礼物代码 |
| 4 | Python画圣诞树代码 |
| 5 | Python可爱版圣诞树丨绿色 |
| 6 | Python可爱版圣诞树丨粉色 |
| 7 | Python大雪纷飞代码 |
| 8 | Python生日蛋糕代码 |
| 9 | Python五彩气球代码 |
| 10 | Python国庆祝福代码 |
| 11 | Python万圣礼物代码 |
| 12 | Python愚人节礼物代码 |
| 13 | Python浪漫星空代码 |
| 14 | Python樱花树代码 |
| 动漫系列 ||
| 1 | Python名侦探柯南 |
| 2 | Python喜羊羊 |
| 3 | Python懒羊羊 |
| 4 | Python沸羊羊 |
| 5 | Python小灰灰 |
| 6 | Python小香香 |
| 7 | Python灰太狼 |
| 8 | Python海绵宝宝 |
| 9 | Python哆啦A梦 |
| 10 | Python凯蒂猫 |
| 11 | Python猫和老鼠 |
| 12 | Python草莓熊 |
| 13 | Python迷你皮卡丘 |
| 14 | Python高级皮卡丘 |
| 15 | Python豪华皮卡丘 |
| 16 | Python史迪仔 |
| 17 | Python小熊猫 |
| 18 | Python蜘蛛侠 |
| 19 | Python可爱版蜡笔小新 |
| 20 | Python萌萌的蜡笔小新 |
| 21 | Python罗小黑 |
| 22 | Python猪猪侠 |
| 炫酷系列 ||
| 1 | Python张万森下雪了 |
| 2 | Python一闪一闪亮晶晶 |
| 3 | Python黑客帝国代码雨 |
| 4 | Python七彩花朵 |
| 5 | Python模拟3D星空 |
| 6 | Python金榜题名 |
| 7 | Python满天星 |

写在前面

Python绘制动态烟花庆典的完整代码。

技术需求

  1. Pygame核心模块应用
  • 窗口初始化 :通过pg.display.Info()获取屏幕尺寸,实现全屏适配;调用set_caption设置窗口标题,增强交互体验。
  • 帧率控制 :使用pg.time.Clock()控制动画刷新频率,确保烟花运动流畅自然,避免卡顿或过快闪现。
  • 事件监听 :监听QUIT事件以安全退出程序,保障运行稳定性。
  1. 面向对象结构设计
  • 类分层架构 :构建Firework(烟花)、Particle(粒子)、Trail(轨迹)三个层级类,分别模拟烟花发射、爆炸与光尾效果,逻辑清晰,扩展性强。
  • 属性封装:每个对象独立管理位置、速度、颜色、生命周期等状态,实现高度自治与动态行为模拟。
  1. 物理引擎模拟
  • 向量运算 :利用pg.math.Vector2进行位置、速度和加速度的数学计算,真实还原重力下坠与爆炸扩散的物理过程。
  • 力的施加 :通过apply_force方法为粒子施加重力及随机扰动力,增强运动的自然感与多样性。
  1. 视觉特效渲染
  • 渐变轨迹 :设计Trail类记录粒子历史坐标,绘制由大到小、由亮变暗的拖尾,模仿真实光迹衰减效果。
  • 色彩随机性:烟花与粒子均采用随机RGB颜色生成,配合多色爆炸设计,呈现绚丽多彩的夜空盛宴。
  1. 动态生命周期管理
  • 状态判断:依据粒子速度方向判断烟花是否达到顶点并触发爆炸;通过生命值和距离原点半径控制粒子消亡。
  • 自动回收:当所有爆炸粒子消失后,自动从主列表中移除已完成动画的烟花对象,优化性能,防止内存堆积。
  1. 文本与界面融合
  • 祝福语展示:加载系统字体并渲染"Happy New Year!"文字,居中显示于屏幕,赋予程序节日氛围与情感表达。
  • 背景色调:采用深蓝灰色背景(20,20,30),突出烟花明亮色彩,营造夜晚庆典的沉浸感。

主要代码

python 复制代码
import pygame as pg
import random as ra
import math
 
pg.init()
pg.display.set_caption("🎇")
 
winScreen = pg.display.Info()
screenWidth = winScreen.current_w
screenHeight = winScreen.current_h
 
vector = pg.math.Vector2
 
trail_colors = [(45, 45, 45), (60, 60, 60), (75, 75, 75), (125, 125, 125), (150, 150, 150)]
 
 
# 烟花类
class Firework:
 
    def __init__(self):
        # 随机生成颜色
        self.colour = (ra.randint(0, 255), ra.randint(0, 255), ra.randint(0, 255))
        # 随机生成三种颜色
        self.colours = (
            (ra.randint(0, 255), ra.randint(0, 255), ra.randint(0, 255)),
            (ra.randint(0, 255), ra.randint(0, 255), ra.randint(0, 255)),
            (ra.randint(0, 255), ra.randint(0, 255), ra.randint(0, 255))
        )
        # 生成一个表示发射出的火花的粒子对象
        self.firework = Particle(ra.randint(0,screenWidth), screenHeight, True, self.colour)
        # 初始化爆炸状态为 False
        self.exploded = False
        self.particles = []
        # 爆炸产生的粒子数量范围
        self.min_max_particles = vector(666, 999)
......

创作流程

我创作这段代码时,心中正回响着新年的钟声。我想用程序还原那一刻的激动与喜悦------当夜幕降临,第一束烟花冲上云霄,瞬间炸开成千万点星光,照亮了人们的笑脸。于是,我决定构建一个数字庆典,不只是简单的动画,而是一场有节奏、有情感、有物理逻辑的视觉交响。

一开始,我选择Pygame作为开发框架,因为它既能处理图形渲染,又支持精细的数学控制。我先设定了整个舞台:全屏窗口、深色背景,像一块巨大的夜幕等待被点亮。接着,我思考如何让画面"活"起来。烟花不是静态图像,它有升空、爆发、消散的过程,必须拆解成多个阶段来模拟。

我以"发射-爆炸-消亡"为主线,设计了三个核心类。我把烟花本身看作一个导演,它负责启动一颗上升的火球;当这颗火球到达最高点时,它会触发一场盛大的演出------爆炸,生成数百个带着光尾的粒子向四面八方飞散。每一个粒子都像是一个舞者,有自己的速度、方向和生命长度,它们在空中划出弧线,留下渐隐的足迹,最终悄然熄灭。

为了让运动更真实,我引入了向量计算和简单的物理模型。我给上升的火花施加向上的初速度,同时让它受到向下的微弱重力,直到速度归零的那一刻,正是烟花绽放的最佳时机。而爆炸后的粒子则拥有随机的方向和初速,并在飞行中逐渐减速,模仿空气阻力的效果。我还特别设计了"拖尾"机制,让每个粒子留下一串逐渐变淡的小圆点,形成那种熟悉的光轨美感。

色彩是我最用心的部分。我不想用固定的颜色,因为真实的烟花从来不会重复。于是我让程序随机生成RGB值,每颗烟花都有独一无二的主色调,爆炸时还会释放出三种不同颜色的碎片,像是大自然在夜空中调色。轨迹的颜色也经过精心挑选,从亮灰到深灰渐变,既不喧宾夺主,又能衬托出主体的明亮。

最后,我加入了那句"Happy New Year!"。它静静地悬浮在画面中央,像是这场虚拟庆典的灵魂。我不希望它干扰视觉,所以选择了柔和的粉白色,位置略微偏上,给烟花留出足够的表演空间。它的存在不是装饰,而是一种情感的锚点------提醒观看者,这一切的绚烂,都是为了庆祝时间的更迭与希望的重生。

当我运行程序的那一刻,看着一颗颗烟花接连升空,炸成漫天星雨,耳边仿佛响起了欢呼声。我知道,这不仅是一段代码,更是我对节日、对美、对瞬间永恒的致敬。

写在后面

我是一只有趣的兔子,感谢你的喜欢!

相关推荐
storyseek2 小时前
对Qwen3:8b进行QLora微调实现分类操作
python·深度学习·机器学习
&星痕&2 小时前
人工智能:深度学习:0.pytorch安装
人工智能·python·深度学习
铁手飞鹰2 小时前
[深度学习]常用的库与操作
人工智能·pytorch·python·深度学习·numpy·scikit-learn·matplotlib
wWYy.2 小时前
C++—集群聊天室(3)CMake详解
开发语言·c++
lsx2024062 小时前
SciPy 稀疏矩阵
开发语言
小猪咪piggy2 小时前
【Python】(6) 文件操作
开发语言·python
睡一觉就好了。2 小时前
C++ 容器
开发语言·c++
BYSJMG2 小时前
计算机毕设推荐:基于大数据的共享单车数据可视化分析
大数据·后端·python·信息可视化·数据分析·课程设计
JMchen1232 小时前
AI编程范式转移:深度解析人机协同编码的实战进阶与未来架构
人工智能·经验分享·python·深度学习·架构·pycharm·ai编程