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

Python 如何实现烟花效果的完整代码

文章精选推荐

1 JetBrains Ai assistant 编程工具让你的工作效率翻倍
2 Extra Icons:JetBrains IDE的图标增强神器
3 IDEA插件推荐-SequenceDiagram,自动生成时序图
4 BashSupport Pro 这个ides插件主要是用来干嘛的 ?
5 IDEA必装的插件:Spring Boot Helper的使用与功能特点
6 Ai assistant ,又是一个写代码神器
7 Cursor 设备ID修改器,你的Cursor又可以继续试用了

文章正文

在 Python 中实现烟花特效可以使用 pygame 库来创建图形化界面和动画效果。以下是一个完整的烟花特效实现代码:


1. 安装 pygame

首先,确保你已经安装了 pygame 库。如果没有安装,可以使用以下命令安装:

pip install pygame

2. 实现烟花特效的完整代码

import pygame
import random
import math# 初始化 pygame
pygame.init()# 设置屏幕大小
WIDTH, HEIGHT = 800, 600
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("烟花特效")# 定义颜色
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
COLORS = [(255, 0, 0),  # 红色(0, 255, 0),  # 绿色(0, 0, 255),  # 蓝色(255, 255, 0),  # 黄色(255, 0, 255),  # 紫色(0, 255, 255),  # 青色
]# 烟花粒子类
class Particle:def __init__(self, x, y, color, speed, angle):self.x = xself.y = yself.color = colorself.speed = speedself.angle = angleself.age = 0def move(self):# 根据角度和速度更新粒子的位置self.x += math.cos(self.angle) * self.speedself.y += math.sin(self.angle) * self.speedself.age += 1def draw(self):# 绘制粒子pygame.draw.circle(screen, self.color, (int(self.x), int(self.y)), 2)# 烟花类
class Firework:def __init__(self):self.x = random.randint(0, WIDTH)self.y = HEIGHTself.color = random.choice(COLORS)self.particles = []self.exploded = Falsedef explode(self):# 爆炸生成多个粒子for _ in range(100):speed = random.uniform(1, 3)angle = random.uniform(0, 2 * math.pi)self.particles.append(Particle(self.x, self.y, self.color, speed, angle))self.exploded = Truedef move(self):if not self.exploded:# 烟花上升self.y -= 5if self.y <= random.randint(100, 300):self.explode()else:# 粒子移动for particle in self.particles:particle.move()def draw(self):if not self.exploded:# 绘制未爆炸的烟花pygame.draw.circle(screen, self.color, (int(self.x), int(self.y)), 5)else:# 绘制爆炸后的粒子for particle in self.particles:particle.draw()# 主循环
def main():clock = pygame.time.Clock()fireworks = []running = Truewhile running:screen.fill(BLACK)  # 清屏for event in pygame.event.get():if event.type == pygame.QUIT:running = False# 添加新的烟花if random.random() < 0.05:  # 控制烟花生成频率fireworks.append(Firework())# 更新和绘制烟花for firework in fireworks[:]:firework.move()firework.draw()if firework.exploded and all(particle.age > 50 for particle in firework.particles):fireworks.remove(firework)pygame.display.flip()  # 更新屏幕clock.tick(30)  # 控制帧率pygame.quit()if __name__ == "__main__":main()

3. 代码说明

  1. Particle 类

    • 表示烟花爆炸后的单个粒子。
    • 每个粒子有自己的位置、颜色、速度和角度。
    • 通过 move 方法更新粒子的位置,通过 draw 方法绘制粒子。
  2. Firework 类

    • 表示一个烟花。
    • 烟花在未爆炸时会向上移动,达到一定高度后爆炸,生成多个粒子。
    • 通过 explode 方法生成粒子,通过 movedraw 方法更新和绘制烟花。
  3. 主循环

    • 不断生成新的烟花,并更新和绘制所有烟花。
    • 使用 pygame.event.get() 检测退出事件。
    • 通过 clock.tick(30) 控制帧率为 30 FPS。

4. 运行效果

运行代码后,你会看到一个黑色背景的窗口,烟花不断从底部升起并在空中爆炸,形成绚丽的烟花特效。


5. 进一步优化

  • 增加更多颜色:可以在 COLORS 列表中添加更多颜色。
  • 调整烟花数量:通过修改 random.random() < 0.05 中的阈值控制烟花生成频率。
  • 添加音效:使用 pygame.mixer 播放烟花爆炸的音效。

希望这个烟花特效的实现对你有帮助!

相关文章:

Python 如何实现烟花效果的完整代码

文章精选推荐 1 JetBrains Ai assistant 编程工具让你的工作效率翻倍 2 Extra Icons&#xff1a;JetBrains IDE的图标增强神器 3 IDEA插件推荐-SequenceDiagram&#xff0c;自动生成时序图 4 BashSupport Pro 这个ides插件主要是用来干嘛的 &#xff1f; 5 IDEA必装的插件&…...

Winbox5怎样设置上网

要让连接到交换机的设备都能上网&#xff0c;需在MikroTik路由器&#xff08;通过WinBox配置&#xff09;上完成以下步骤。假设您的网络拓扑是&#xff1a;外网IP配置在路由器的WAN口&#xff0c;内网设备通过交换机连接到路由器的LAN口。 步骤 1&#xff1a;配置内网接口&…...

(KTransformers) RTX4090单卡运行 DeepSeek-R1 671B

安装环境为&#xff1a;ubuntu 22.04 x86_64 下载模型 编辑文件vim url.list 写入如下内容 https://modelscope.cn/models/unsloth/DeepSeek-R1-GGUF/resolve/master/DeepSeek-R1-Q4_K_M/DeepSeek-R1-Q4_K_M-00001-of-00009.gguf https://modelscope.cn/models/unsloth/Dee…...

【软考-架构】1.2、指令系统-存储系统-cache

GitHub地址&#xff1a;https://github.com/tyronczt/system_architect ✨资料&文章更新✨ 指令系统 计算机指令执行过程&#xff1a;取指令一一分析指令一一执行指令三个步骤&#xff0c;首先将程序计数器PC中的指令地址取出&#xff0c;送入地址总线&#xff0c;CPU依据…...

CI/CD与容器化技术核心知识点的QA

CI/CD与容器化技术核心知识点的Q&A 以下是CI/CD和容器化技术的经典必考面试题及详解,结合行业实践与理论核心整理而成: 一、CI/CD核心概念与流程 简述CI/CD的核心目标与实现价值 答案:通过自动化流水线实现快速、可靠的软件交付,减少人工干预,提升开发与运维协作效率…...

动态规划刷题

文章目录 动态规划三步问题题目解析代码 动态规划 1. 状态表示&#xff1a;dp[i]&#xff0c;表示dp表中i下标位置的值 2. 状态转移方程&#xff1a;以i位置位置的状态&#xff0c;最近的一步来划分问题&#xff0c;比如可以将状态拆分成前状态来表示现状态&#xff0c;dp[i] …...

不谓侠--记录

音乐《不谓侠》 衣襟上 别好了晚霞 余晖送我牵匹老马 正路过 烟村里人家 恰似当年故里正飞花 醉过风 喝过茶 寻常巷口寻个酒家 在座皆算老友 碗底便是天涯 天涯远 无处不为家 蓬门自我也像广厦 论意气 不计多或寡 占三分便敢自称为侠 刀可捉 拳也耍 偶尔闲来…...

2025-03-01 学习记录--C/C++-C语言 整数类型对比

C语言 整数类型对比 类型位数范围&#xff08;有符号&#xff09;范围&#xff08;无符号&#xff09;格式化符号char8-128 到 1270 到 255%c 或 %hhdshort16-32,768 到 32,7670 到 65,535%hdint32-2,147,483,648 到 2,147,483,6470 到 4,294,967,295%dlong32 或 64-2,147,483…...

Python核心技术,Django学习基础入门教程(附环境安装包)

文章目录 前言1. 环境准备1.1Python安装1.2选择Python开发环境1.3 创建虚拟环境1.4 安装 Django 2. 创建 Django 项目3. Django项目结构介绍4. 启动开发服务器5. 创建 Django 应用6. 应用结构介绍7. 编写视图函数8. 配置 URL 映射9. 运行项目并访问视图10. 数据库配置与模型创建…...

MFC中CMutex类和CSingleLock类,配合使用疑惑

在使用CMutex过程中&#xff0c;看到别人使用了CSingleLock类&#xff0c;想着明明CMutex已经可以实现线程同步了&#xff0c;为什么还有使用CSingleLock类呢&#xff1f; 在MFC中&#xff0c;虽然CMutex类本身可以实现线程同步&#xff0c;但通常会与CSingleLock类一起使用&am…...

爬虫系列之【数据解析之正则】《二》

目录 前言 一、正则基本使用 1.1 导包 1.2 接口方法 1.3 换行匹配问题 二、实战案例 完整代码 前言 在爬虫工作中&#xff0c;我们主要会遇到两种类型的文本数据&#xff1a; JSON格式数据 HTML文档数据 对于JSON字符串数据&#xff0c;通常使用Python的字典操作进行键…...

HTML AI 编程助手

HTML AI 编程助手 引言 随着人工智能技术的飞速发展&#xff0c;编程领域也迎来了新的变革。HTML&#xff0c;作为网页制作的基础语言&#xff0c;与AI技术的结合&#xff0c;为开发者带来了前所未有的便利。本文将探讨HTML AI编程助手的功能、应用场景以及如何利用它提高编程…...

RFID工具柜DW-G104R|智能存储,便捷高效

一、行业背景 RFID智能工具柜&#xff08;DW-G104R&#xff09;RFID工具管理柜是一种结合RFID技术和智能柜设备的新型工具管理设施&#xff0c;通过自动化管理可以提高工具管理的效率和准确性。 在工业生产中&#xff0c;工具柜是工具存储和管理的重要设备。传统工具柜存在管…...

【前端面试】如何不通过正则:验证IP地址合法性

前言 在 Web 开发中&#xff0c;验证用户输入的 IP 地址是否合法是一个常见需求 面试中也会问到 通常&#xff0c;我们会使用正则表达式来完成这个任务&#xff0c;因为它简洁高效。然而&#xff0c;正则表达式对于初学者来说可能有些晦涩难懂。本文将介绍一种不使用正则表达…...

中间件专栏之Redis篇——Redis的三大持久化方式及其优劣势对比

Redis是内存数据库&#xff0c;它的数据一般存放在内存中&#xff0c;一旦断电或者宕机&#xff0c;存在内存中的数据就会丢失。当然&#xff0c;它也具备数据持久化的能力&#xff0c;本文就将介绍Redis的三种持久化方式及其优劣势对比。 一、RDB&#xff08;Redis Database&…...

Linux软连接与时区日期

软连接 使用ln命令创建软连接。 在系统中创建软连接&#xff0c;可以将文件&#xff0c;文件夹连接到其他为止。 类似于Windows系统的快捷方式。 语法&#xff1a;ln -s 参数1 参数2 -s选项&#xff0c;创建软连接。 参数1&#xff0c;被链接的文件或文件夹。 参数2&#xff0…...

安全测试之五:SQL Server注入漏洞几个实例

示例 1&#xff1a;在 GET 请求中测试 SQL 注入 最简单且有时最有效的情况是针对登录页面进行测试。当登录页面请求用户输入用户名和密码时&#xff0c;攻击者可以尝试输入以下字符串 “ or 11”&#xff08;不包含双引号&#xff09;&#xff1a; https://vulnerable.web.ap…...

2024 ChatGPT大模型技术场景与商业应用视频精讲合集(45课).zip

2024ChatGPT大模型技术场景与商业应用视频精讲合集&#xff0c;共十三章&#xff0c;45课。 01. 第一章 ChatGPT&#xff1a;通用人工智能的典范 1.1 ChatGPT概述 .mp4 1.2 通用能力 .mp4 1.3 通用人工智能风口 .mp4 02. 第二章 大模型&#xff1a;ChatGPT的核心支撑 2.1 底层…...

HTTP四次挥手是什么?

四次挥手&#xff0c;这是TCP协议用来关闭连接的过程。四次挥手是确保两个主机之间能够安全、可靠地关闭连接的重要机制。我会用简单易懂的方式来讲解&#xff0c;帮助你理解它的原理和过程。 1. 什么是四次挥手&#xff1f; 定义 四次挥手是TCP协议用来关闭连接的过程。它通…...

前端内存泄漏的几种情况及方案

前端内存泄漏是常见但容易被忽视的问题&#xff0c;可能导致页面卡顿、崩溃或性能下降。以下是几种典型场景及解决方案&#xff1a; 1. 未清理的全局变量 场景&#xff1a; 意外创建全局变量&#xff08;未使用 var/let/const&#xff09;。主动挂载到 window 的大对象未释放…...

人工智能之数学基础:线性代数中的特殊矩阵

本文重点 矩阵是数学中一个重要的工具,在各个领域都有广泛的应用。其中,一些特殊矩阵由于具有独特的性质,在特定的问题中发挥着关键作用。 单位矩阵 单位矩阵是一种特殊的方阵,在矩阵乘法中起到类似于数字 “1” 的作用。对于一个的单位矩阵,其主对角线元素全为 1,其余…...

单例模式---是 Spring 容器的核心特性之一

1.最近面试让手写一个单例&#xff1b;我一直知道单例&#xff1b;但是一直很困惑&#xff1b;工作中也没怎么用过&#xff1b;为什么面试总问&#xff1b;今天我才知道思考出来&#xff1b;单例是spring容器的核心特性&#xff1b;很多知识我只知道是什么&#xff1b;但是没有…...

代码随想录算法【Day59】

47. 参加科学大会 思路 使用Dijkstra 算法 计算从起点&#xff08;节点 1&#xff09;到终点&#xff08;节点 n&#xff09;的最短路径。用优先队列&#xff08;小顶堆&#xff09; 维护当前未访问的最短路径节点&#xff0c;每次选择距离最短的未访问节点进行更新&#xff…...

Linux篇——工具

在有了前面的基础知识后&#xff0c;我们现在基本能够使用Linux的相关基本操作了&#xff0c;但我们知道&#xff0c;没有工具我们是无法便捷地实现某些功能的&#xff0c;因此我们这篇内容来谈谈Linux中的工具。 一、软件包管理器yum 我们知道&#xff0c;我们要想获得一个软…...

leetcode第77题组合

原题出于leetcode第77题https://leetcode.cn/problems/combinations/ 1.树型结构 2.回溯三部曲 递归函数的参数和返回值 确定终止条件 单层递归逻辑 3.代码 二维数组result 一维数组path void backtracking(n,k,startindex){if(path.sizek){result.append(path);return ;}…...

通过fgets获取文件内容

#include <stdio.h> char *fgets(char *s, int size, FILE *stream); 使用fgets获取文件内容 #include <stdio.h> #include <stdlib.h>int main(void) {char str[100] {0};FILE *fp NULL;fp fopen("./test_file", "r");if (NULL …...

STaR(Self-Taught Reasoner)方法:让语言模型自学推理能力(代码实现)

STaR&#xff08;Self-Taught Reasoner&#xff09;方法&#xff1a;让语言模型自学推理能力 在大型语言模型&#xff08;LLM&#xff09;的推理能力优化中&#xff0c;STaR&#xff08;Self-Taught Reasoner&#xff09; 是一种引人注目的技术&#xff0c;属于“修改提议分布…...

[创业之路-329]:华为铁三角实施的步骤

一、通用过程 华为铁三角实施的步骤主要包括以下几个关键阶段&#xff1a; 1、明确角色与职责 确定铁三角成员&#xff1a;组建由客户经理&#xff08;AR&#xff09;、解决方案经理&#xff08;SR&#xff09;和交付经理&#xff08;FR&#xff09;组成的铁三角团队。制定岗…...

在 Ubuntu 下通过 Docker 部署 Caddy 和 PHP-FPM 服务器

引言 大家好&#xff0c;今天我们要聊的主题是如何在 Ubuntu 上通过 Docker 部署 Caddy 和 PHP-FPM 服务器。Caddy 是一个现代化的 web 服务器&#xff0c;支持 HTTPS&#xff0c;配置简单&#xff1b;而 PHP-FPM 是 PHP 的 FastCGI 进程管理器&#xff0c;能够高效处理 PHP 请…...

工程化与框架系列(10)--微前端架构

微前端架构 &#x1f3d7;️ 微前端是一种将前端应用分解成更小、更易管理的独立部分的架构模式。本文将详细介绍微前端的核心概念、实现方案和最佳实践。 微前端概述 &#x1f31f; &#x1f4a1; 小知识&#xff1a;微前端的核心理念是将前端应用分解成一系列独立部署、松耦…...