0基础开发学习python工具_____用 Python + Pygame 打造绚丽烟花秀 轻松上手体验

上期博文发布后,很多学习爱好者都表现出浓厚兴趣。其实在学习任何技术的过程中,培养学习兴趣是至关重要的第一步,它能有效激发持续的学习动力..那么如何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 行代码,你就能拥有一个可交互、高性能、视觉惊艳的烟花程序。这不仅是编程练习,更是一份可以送给朋友的数字礼物。在跨年夜、生日或纪念日,运行它,点亮屏幕的夜空吧!通过体验有没有增加你到学习兴趣呢?

相关推荐
nervermore99016 小时前
2.6 测试
python
CodeOfCC16 小时前
C++ 实现ffmpeg解析hls fmp4 EXT-X-DISCONTINUITY并支持定位
开发语言·c++·ffmpeg·音视频
ghie909016 小时前
基于LSB匹配的隐写术MATLAB实现
开发语言·计算机视觉·matlab
航Hang*16 小时前
第六章:综合布线技术 —— 干线子系统的设计与施工
网络·笔记·学习·期末·复习
Lhan.zzZ16 小时前
Qt绘制残留问题排查与修复日志
开发语言·数据库·qt
CodeAllen嵌入式16 小时前
Rust 正式成为 Linux 永久核心语言
linux·开发语言·rust
EZ_Python16 小时前
告别WPS会员!用Python自制电子发票批量打印排版工具
python·自动化
superman超哥16 小时前
Rust 堆内存与栈内存的所有权管理:精确控制的内存模型
开发语言·后端·rust·编程语言·内存模型·堆内存与栈内存·所有权管理
写文章的大米16 小时前
1 分钟读懂:Python 装饰器
python