当前位置: 首页 > article >正文

新年快乐!给大家带来了一份 python 烟花代码!

大家好,我是菲英。

今天带来一份 python 代码,是简易的烟花小程序。

安装包

pip install pygame

进入正题 - 我们的烟花代码:

import pygame
import random
import math

# 初始化pygame
pygame.init()

# 设置屏幕大小和标题
screen = pygame.display.set_mode((800, 600))
pygame.display.set_caption("Simple Fireworks")

# 定义颜色
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
RED = (255, 0, 0)
GREEN = (0, 255, 0)
BLUE = (0, 0, 255)
YELLOW = (255, 255, 0)

# 烟花粒子类
class Firework:
    def __init__(self, x, y):
        self.x = x
        self.y = y
        self.particles = []
        self.color = random.choice([RED, GREEN, BLUE, YELLOW])
        self.exploding = False

    def explode(self):
        ifnot self.exploding:
            for _ in range(100):
                angle = random.uniform(0, 2 * math.pi)
                speed = random.uniform(2, 5)
                dx = speed * math.cos(angle)
                dy = speed * math.sin(angle)
                self.particles.append([self.x, self.y, dx, dy, self.color, random.randint(50, 255)])

            self.exploding = True

    def update(self):
        for particle in self.particles:
            particle[0] += particle[2]
            particle[1] += particle[3]
            particle[5] -= 2# 粒子的透明度减小

        self.particles = [p for p in self.particles if p[5] > 0]

    def draw(self):
        for particle in self.particles:
            pygame.draw.circle(screen, particle[4], (int(particle[0]), int(particle[1])), 3)

# 主程序
def main():
    clock = pygame.time.Clock()
    fireworks = []

    running = True
    while running:
        screen.fill(BLACK)

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                running = False

        # 每隔一段时间生成一个烟花
        if random.random() < 0.02:
            fireworks.append(Firework(random.randint(100, 700), random.randint(100, 500)))

        # 更新并绘制烟花
        for firework in fireworks:
            firework.explode()
            firework.update()
            firework.draw()

        pygame.display.flip()
        clock.tick(60)

    pygame.quit()

if __name__ == "__main__":
    main()

最后是它的代码说明:

  • Firework 类:每个烟花由多个粒子组成,粒子会在爆炸时向四面八方散开,每个粒子具有位置、速度、颜色和透明度。

  • explode() 方法:用于初始化爆炸粒子,随机生成不同方向和速度的粒子。

  • update() 方法:更新每个粒子的位置,并让透明度逐渐减少,模拟烟花消失的效果。

  • draw() 方法:将每个粒子画在屏幕上。


http://www.kler.cn/a/525355.html

相关文章:

  • 解码,蓝桥杯2020G
  • Redis学习之哨兵二
  • 【Rust自学】14.6. 安装二进制crate
  • 能说说MyBatis的工作原理吗?
  • 学习数据结构(2)空间复杂度+顺序表
  • 基于SpringBoot的高校一体化服务平台的设计与实现(源码+SQL脚本+LW+部署讲解等)
  • Vue - pinia
  • Qt调用ffmpeg库录屏并进行UDP组播推流
  • 实验四---基于MATLAB的根轨迹绘制与性能分析---自动控制原理实验课
  • DeepSeek R1中提到“知识蒸馏”到底是什么
  • 「 机器人 」扑翼飞行器控制策略浅谈
  • 国内AI芯片厂商的计算平台概述
  • NLP深度学习 DAY4:Word2Vec详解:两种模式(CBOW与Skip-gram)
  • AI助力精准农业:从数据到行动的智能革命
  • 帕金森患者:科学锻炼,提升生活质量
  • 面向对象设计(大三上)--往年试卷题+答案
  • 多线程【入门】
  • 【学术会议征稿-第二届生成式人工智能与信息安全学术会议(GAIIS 2025)】人工智能与信息安全的魅力
  • ESP32和STM32在处理中断方面的区别
  • Midjourney中的垫图、角色一致、风格一致到底区别在哪
  • Oracle Primavera P6 最新版 v24.12 更新 1/2
  • web前端10--变化
  • jQuery的系统性总结
  • 梯度提升用于高效的分类与回归
  • 55. 常用UDP端口号及其功能
  • lanqiaoOJ 2145:求阶乘 ← 二分法