
上期博文发布后,很多学习爱好者都表现出浓厚兴趣。其实在学习任何技术的过程中,培养学习兴趣是至关重要的第一步,它能有效激发持续的学习动力..那么如何geng'hao。
想在电脑上放一场属于自己的数字烟花秀?无需复杂依赖,只需 Python 和一个轻量库,你就能打造一个支持鼠标点击发射、色彩缤纷、带物理效果的烟花动画!本文将手把手教你用 pygame 实现一个高性能、可交互的烟花小工具。
进阶修改
首先需要手动安卓以下pygame。其实安卓方法也非常简单。在命令下执行
pip install pygame
示例标示安装成功

为什么选择 Pygame
比 turtle 更适合动画和游戏开发。支持透明度、粒子淡出、高帧率渲染。可轻松响应鼠标/键盘事件跨平台(Windows / macOS / Linux)
完整代码:可点击发射的烟花秀
将以下代码保存为 yanhua2.py 并运行即可看到效果:
演示效果

源代码;
import pygame
import random
import math
import sys
# 初始化 pygame
pygame.init()
# 屏幕设置
WIDTH, HEIGHT = 800, 600
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("✨ Python 烟花秀 - 点击屏幕发射!")
clock = pygame.time.Clock()
# 粒子类
class Particle:
def __init__(self, x, y, color):
self.x = x
self.y = y
self.color = color
angle = random.uniform(0, math.pi * 2)
speed = random.uniform(2, 8)
self.vx = math.cos(angle) * speed
self.vy = math.sin(angle) * speed
self.life = 255 # 用于透明度(Alpha)
self.radius = random.uniform(1.5, 3.5)
def update(self):
self.x += self.vx
self.y += self.vy
self.vy += 0.1 # 重力
self.life -= 3 # 逐渐消失
return self.life > 0
def draw(self, surface):
if self.life > 0:
alpha = max(0, min(255, int(self.life)))
color_with_alpha = (*self.color, alpha)
# 创建临时 Surface 支持透明度
temp_surf = pygame.Surface((self.radius * 2, self.radius * 2), pygame.SRCALPHA)
pygame.draw.circle(temp_surf, color_with_alpha, (self.radius, self.radius), self.radius)
surface.blit(temp_surf, (self.x - self.radius, self.y - self.radius))
# 烟花类(可选,这里直接用粒子列表)
particles = []
# 颜色预设(RGB)
COLORS = [
(255, 50, 50), # 红
(255, 150, 0), # 橙
(255, 255, 50), # 黄
(50, 255, 100), # 绿
(50, 150, 255), # 蓝
(180, 50, 255), # 紫
(255, 255, 255), # 白
(255, 100, 200), # 粉
]
# 主循环
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.MOUSEBUTTONDOWN:
# 鼠标点击位置发射烟花
x, y = pygame.mouse.get_pos()
# 随机选择主色调
base_color = random.choice(COLORS)
for _ in range(80): # 每个烟花80个粒子
# 微调颜色,增加层次感
r = min(255, max(0, base_color[0] + random.randint(-30, 30)))
g = min(255, max(0, base_color[1] + random.randint(-30, 30)))
b = min(255, max(0, base_color[2] + random.randint(-30, 30)))
particles.append(Particle(x, y, (r, g, b)))
# 自动随机发射(可选)
if random.random() < 0.02: # 2% 概率每帧自动发射
x = random.randint(100, WIDTH - 100)
y = random.randint(100, HEIGHT // 2)
base_color = random.choice(COLORS)
for _ in range(60):
r = min(255, max(0, base_color[0] + random.randint(-40, 40)))
g = min(255, max(0, base_color[1] + random.randint(-40, 40)))
b = min(255, max(0, base_color[2] + random.randint(-40, 40)))
particles.append(Particle(x, y, (r, g, b)))
# 更新粒子
particles = [p for p in particles if p.update()]
# 绘制
screen.fill((0, 0, 0)) # 黑色背景
for p in particles:
p.draw(screen)
pygame.display.flip()
clock.tick(60) # 60 FPS
pygame.quit()
sys.exit()
功能亮点
| 功能 | 说明 |
|---|---|
| 点击发射 | 在屏幕任意位置点击即可发射烟花 |
| 自动烟花 | 程序也会自动在空中随机发射烟花,营造节日氛围 |
| 颜色层次 | 每个烟花基于主色随机微调,避免单调 |
| 淡出效果 | 粒子随时间逐渐透明,模拟真实光效衰减 |
| 物理模拟 | 粒子受重力影响,抛物线下落 |
进阶建议
在这个基础上还可以添加音效:用 pygame.mixer 播放"砰"的爆炸声增加"连发"模式:按住鼠标连续发射添加文字祝福语:如"新年快乐!"浮动在空中保存为可执行文件:用 pyinstaller 打包成 .exe
修改结语
用不到 100 行代码,你就能拥有一个可交互、高性能、视觉惊艳的烟花程序。这不仅是编程练习,更是一份可以送给朋友的数字礼物。在跨年夜、生日或纪念日,运行它,点亮屏幕的夜空吧!通过体验有没有增加你到学习兴趣呢?