【python】python新年烟花代码【附源码】

        欢迎来到英杰社区icon-default.png?t=N7T8https://bbs.csdn.net/topics/617804998     

   新年的钟声即将敲响,为了庆祝这个喜庆的时刻,我们可以用 Python 编写一个炫彩夺目的烟花盛典。本文将详细介绍如何使用 Pygame 库创建一个令人惊叹的烟花效果。

一、效果图:

        

二、准备工作

(1)、导入必要的模块:

       代码首先导入了需要使用的模块:requests、lxml和csv。

import requests
from lxml import etree
import csv

        如果出现模块报错

c124a1693bfc457ba1f2909ee9d299fc.png

        进入控制台输入:建议使用国内镜像源

pip install 模块名称 -i https://mirrors.aliyun.com/pypi/simple

         我大致罗列了以下几种国内镜像源:

清华大学
https://pypi.tuna.tsinghua.edu.cn/simple阿里云
https://mirrors.aliyun.com/pypi/simple/豆瓣
https://pypi.douban.com/simple/ 百度云
https://mirror.baidu.com/pypi/simple/中科大
https://pypi.mirrors.ustc.edu.cn/simple/华为云
https://mirrors.huaweicloud.com/repository/pypi/simple/腾讯云
https://mirrors.cloud.tencent.com/pypi/simple/

        (2) 、定义粒子类

        接下来,我们定义一个粒子类,每个粒子具有位置、颜色、半径、角度、速度、重力和生命周期等属性。我们还为粒子类添加更新和绘制方法。

class Particle:def __init__(self, x, y, color):self.x = xself.y = yself.color = colorself.radius = 3self.angle = randint(0, 360)self.speed = randint(1, 5)self.gravity = 0.1self.life = randint(20, 25)def update(self):if self.life > 0:radian = math.radians(self.angle)self.x += self.speed * math.cos(radian)self.y -= self.speed * math.sin(radian)self.speed -= self.gravityself.life -= 1def draw(self):pygame.draw.circle(win, self.color, (int(self.x), int(self.y)), self.radius)

        (3)、定义烟花类

         接下来,我们定义一个烟花类,每个烟花具有位置、颜色、粒子列表和是否已经爆炸的属性。我们为烟花类添加爆炸和更新方法,并在绘制方法中绘制烟花本身。

 
class Firework:def __init__(self):self.x = randint(100, DISPLAY_WIDTH - 100)self.y = DISPLAY_HEIGHTself.color = (randint(0, 255), randint(0, 255), randint(0, 255))self.particles = []self.exploded = Falsedef explode(self):for _ in range(100):particle = Particle(self.x, self.y, self.color)self.particles.append(particle)def update(self):if not self.exploded:self.y -= 3if self.y <= randint(200, 400):self.explode()self.exploded = Trueelse:for particle in self.particles:particle.update()def draw(self):pygame.draw.circle(win, self.color, (int(self.x), int(self.y)), 5)

        (4)、游戏主循环

        在主循环中,我们处理退出事件,清空窗口,更新和绘制每个烟花及其粒子,移除完成的烟花和消失的粒子,并更新显示。

# 创建烟花列表
fireworks = []# 游戏主循环
running = True
clock = pygame.time.Clock()while running:clock.tick(60)for event in pygame.event.get():if event.type == pygame.QUIT:running = Falsewin.fill(BLACK)# 添加新的烟花if len(fireworks) < 10 and randint(0, 100) < 2:fireworks.append(Firework())# 更新和绘制烟花for firework in fireworks:firework.update()firework.draw()for particle in firework.particles:particle.draw()# 移除完成的烟花及消失的粒子fireworks = [firework for firework in fireworks if not firework.exploded or len(firework.particles) > 0]for firework in fireworks:firework.particles = [particle for particle in firework.particles if particle.life > 0]pygame.display.update()pygame.quit()

英杰社区icon-default.png?t=N7T8https://bbs.csdn.net/topics/617804998

三、完整代码:

        

import pygame
import math
from random import randint, choice# 初始化 Pygame
pygame.init()# 设置窗口大小和标题
DISPLAY_WIDTH = 800
DISPLAY_HEIGHT = 600
win = pygame.display.set_mode((DISPLAY_WIDTH, DISPLAY_HEIGHT))
pygame.display.set_caption("烟花")# 定义颜色
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)# 定义粒子类
class Particle:def __init__(self, x, y, color):self.x = xself.y = yself.color = colorself.radius = 3self.angle = randint(0, 360)self.speed = randint(1, 5)self.gravity = 0.1self.life = randint(20, 25)def update(self):if self.life > 0:radian = math.radians(self.angle)self.x += self.speed * math.cos(radian)self.y -= self.speed * math.sin(radian)self.speed -= self.gravityself.life -= 1def draw(self):pygame.draw.circle(win, self.color, (int(self.x), int(self.y)), self.radius)# 定义烟花类
class Firework:def __init__(self):self.x = randint(100, DISPLAY_WIDTH - 100)self.y = DISPLAY_HEIGHTself.color = (randint(0, 255), randint(0, 255), randint(0, 255))self.particles = []self.exploded = Falsedef explode(self):for _ in range(100):particle = Particle(self.x, self.y, self.color)self.particles.append(particle)def update(self):if not self.exploded:self.y -= 3if self.y <= randint(200, 400):self.explode()self.exploded = Trueelse:for particle in self.particles:particle.update()def draw(self):pygame.draw.circle(win, self.color, (int(self.x), int(self.y)), 5)# 创建烟花列表
fireworks = []# 游戏主循环
running = True
clock = pygame.time.Clock()while running:clock.tick(60)for event in pygame.event.get():if event.type == pygame.QUIT:running = Falsewin.fill(BLACK)# 添加新的烟花if len(fireworks) < 10 and randint(0, 100) < 2:fireworks.append(Firework())# 更新和绘制烟花for firework in fireworks:firework.update()firework.draw()for particle in firework.particles:particle.draw()# 移除完成的烟花及消失的粒子fireworks = [firework for firework in fireworks if not firework.exploded or len(firework.particles) > 0]for firework in fireworks:firework.particles = [particle for particle in firework.particles if particle.life > 0]pygame.display.update()pygame.quit()

        通过上述步骤,我们已经成功创建了一个令人惊叹的烟花盛典。在这个过程中,我们学习了如何使用 Pygame 库和 Python 编程,创建粒子类和烟花类,并在主循环中更新和绘制烟花效果。

    给大家推荐一个网站

    IT今日热榜 一站式资讯平台


        里面包含了上百个IT网站,欢迎大家访问:IT今日热榜 一站式资讯平台

   iToday,打开信息的新时代。作为一家创新的IT数字媒体平台,iToday致力于为用户提供最新、最全面的IT资讯和内容。里面包含了技术资讯、IT社区、面试求职、前沿科技等诸多内容。我们的团队由一群热爱创作的开发者和分享的专业编程知识爱好者组成,他们精选并整理出真实可信的信息,确保您获得独特、有价值的阅读体验。随时随地,尽在iToday,与世界保持连接,开启您的信息新旅程!

IT今日热榜 一站式资讯平台IT今日热榜汇聚各类IT热榜:虎嗅、知乎、36氪、京东图书销售、晚点、全天候科技、极客公园、GitHub、掘金、CSDN、哔哩哔哩、51CTO、博客园、GitChat、开发者头条、思否、LeetCode、人人都是产品经理、牛客网、看准、拉勾、Boss直聘http://itoday.top/#/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/614116.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安防视频监控系统EasyCVR设备分组中在线/离线数量统计的开发与实现

安防视频监控EasyCVR系统具备较强的兼容性&#xff0c;它可以支持国标GB28181、RTSP/Onvif、RTMP&#xff0c;以及厂家的私有协议与SDK&#xff0c;如&#xff1a;海康ehome、海康sdk、大华sdk、宇视sdk、华为sdk、萤石云sdk、乐橙sdk等。EasyCVR平台可覆盖多类型的设备接入&am…

旋转图像(Rotate Image)- LeetCode 48

旋转图像&#xff08;Rotate Image&#xff09;- LeetCode 48 题目描述 给定一个n x n 2D矩阵表示的图像&#xff0c;我们需要将该图像旋转90度。并且&#xff0c;重要的是我们需要在原地修改这个2D矩阵&#xff0c;不能使用额外的2D矩阵。 解题思路 1. 转置操作 首先&…

R语言下载安装及VScode配置

文章目录 1. R 下载和安装1.1 下载1.2 安装 2. VSCODE 配置2.1 安装R拓展2.2 安装R语言辅助功能包2.3 DEBUG 1. R 下载和安装 1.1 下载 网址&#xff1a;https://www.r-project.org/ 选择一个镜像地址下载 选择对应的版本 一般选择base即可 1.2 安装 下载安装包后按提示安装…

Npm+BootStrap布局

NpmBootStrap布局 NodeJs NodeJs概述 Node.js是Ryan Dahl于2009年5月基于Chrome V8引擎构建的一个开源和跨平台的JavaScript运行环境。主要在Windows、Linux、Unix、MacOSX等不同平台上运行 NodeJs意义 Node.js是一个javascript运行环境&#xff0c;它使得javascript可以脱离…

jupyter notebook 配置conda 虚拟环境python

conda创建python环境 conda create -n openvoice python3.9 激活环境 source activate openvoice 在虚拟环境中安装ipykernel pip install ipykernel 添加虚拟环境进到 jupyter notebook python -m ipykernel install --user --name openvoice --display-name openvoice …

Springboot+vue的毕业论文管理系统(有报告)。Javaee项目,springboot vue前后端分离项目

演示视频&#xff1a; Springbootvue的毕业论文管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot vue前后端分离项目 项目介绍&#xff1a; 本文设计了一个基于Springbootvue的前后端分离的毕业论文管理系统&#xff0c;采用M&#xff08;model&…

QT延时五种实现方法

QT中没有提供专用延时函数&#xff0c;但有多种实现方法&#xff0c;各有特点&#xff0c;如下所示&#xff1a; 一.阻塞方式 1.多线程程序使用QThread::sleep()或者QThread::msleep()或QThread::usleep()或QThread::wait()进行延时处理。 Sleep不会释放对象锁&#xff0c;其…

第3章:python的判断语句

学一门语言&#xff0c;无外乎多敲&#xff0c;多用&#xff0c;记得回顾昨天写过的代码呀 布尔类型和比较运算符 布尔类型的定义 使用比较运算符进行比较运算得到布尔类型的结果 比较运算符 """ 演示布尔类型的定义 以及比较运算符的应用 ​ """…

并发前置知识一:线程基础

一、通用的线程生命周期&#xff1a;“五态模型” 二、java线程有哪几种状态&#xff1f; New&#xff1a;创建完线程Runable&#xff1a;start(),这里的Runnable包含操作的系统的Running&#xff08;运行状态&#xff09;和Ready&#xff08;上面的可运行状态&#xff09;Blo…

vscode配置Todo Tree插件

一、在VSCode中安装插件Todo Tree ​​​​ 二、按下快捷键ctrlshiftP&#xff0c;输入setting.jspn 选择相应的配置范围&#xff0c;我们选择的是用户配置 Open User Settings(JSON)&#xff0c;将以下代码插入其中。 {//todo-tree 标签配置从这里开始 标签兼容大小写字母(…

强化学习9——免模型预测算法介绍(蒙特卡洛方法和时步差分方法)

对于大部分情况来说&#xff0c;环境是未知的&#xff0c;也就是说状态转移概率未知&#xff0c;对于这种情况的算法称为免模型预测算法。免模型算法与环境不断交互学习&#xff0c;但是需要大量的运算。 蒙特卡洛方法 蒙特卡罗方法通过重复随机抽选&#xff0c;之后运用统计…

Phaser详解

Phaser是一个相对较新且功能强大的同步原语&#xff0c;它于Java 7中引入&#xff0c;用于协调并行任务的执行。与CyclicBarrier和CountDownLatch等传统的同步工具相比&#xff0c;Phaser提供了更灵活和更高级的功能&#xff0c;特别是在处理动态和可变的并行任务集合时。 1.P…

Python-基础语法

标识符 第一个字符必须是字母表中字母或下划线 _ 。标识符的其他的部分由字母、数字和下划线组成。标识符对大小写敏感。在 Python 3 中&#xff0c;可以用中文作为变量名&#xff0c;非 ASCII 标识符也是允许的了。 python保留字 保留字即关键字&#xff0c;我们不能把它们用…

MATLAB全局最优搜索函数:GlobalSearch函数

摘要&#xff1a;本文介绍了 GlobalSearch 函数的使用句式&#xff08;一&#xff09;、三个运行案例&#xff08;二&#xff09;、 GlobalSearch 函数的参数设置&#xff08;三&#xff09;、GlobalSearch 注意事项及必要说明&#xff08;五&#xff09;等内容。详细介绍如下&…

超维空间S2无人机使用说明书——11、使用3维激光雷达实现ROS无人机的精准定位

引言&#xff1a;在工程应用中&#xff0c;往往需要在没有GPS信号的情况下实现无人机的资助或者稳定的飞行。实现这个的基础就是定位&#xff0c;有了准确的定位信息&#xff0c;无人机才能稳定的飞行。性比较于视觉定位效果&#xff0c;目前3D雷达相对更加稳定&#xff0c;视觉…

FineBI实战项目一(18):每小时上架商品个数分析开发

点击新建组件&#xff0c;创建每小时上架商品个数组件。 选择线图&#xff0c;拖拽cnt&#xff08;总数&#xff09;到纵轴&#xff0c;拖拽hourStr到横轴。 修改横轴和纵轴的文字。 调节连线样式。 添加组件到仪表板。

【LeetCode】59. 螺旋矩阵II(中等)——代码随想录算法训练营Day02

题目链接&#xff1a;59. 螺旋矩阵II 题目描述 给你一个正整数 n &#xff0c;生成一个包含 1 到 n 所有元素&#xff0c;且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xff1a;[[1,2,3],[8,9,4],[7,6,5]] 示例 …

攒机到底能省多少钱?

昨天弄好了攒机配置&#xff0c;今天要求配置一些更为实用的配置&#xff0c;只是作为一般办公&#xff0c;单位买进来的计算机都是联想&#xff0c;价格普遍在7000元以上&#xff0c;出于省钱和实用目的&#xff0c;今天搭配了一个组机方案。 上面的配置对付一般办公足够&…

基于JAVA的婚恋交友网站 开源项目

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 会员管理模块2.3 新闻管理模块2.4 相亲大会管理模块2.5 留言管理模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 会员信息表3.2.2 新闻表3.2.3 相亲大会表3.2.4 留言表 四、系统展示五、核心代码5.…

Docker 有什么优势?

Docker作为一种流行的容器化技术&#xff0c;其优势所在可以从多个维度进行详细阐述。 ![&nbsp][nbsp] 统一环境 在容器化技术成熟之前&#xff0c;软件开发过程中环境部署是一个常见的问题&#xff0c; 开发到生产的整个软件交付流程往往受到多个因素的影响。 场景描述…