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

【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/#/

相关文章:

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

欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 新年的钟声即将敲响&#xff0c;为了庆祝这个喜庆的时刻&#xff0c;我们可以用 Python 编写一个炫彩夺目的烟花盛典。本文将详细介绍如何使用 Pygame 库创建一个令人惊叹的烟花效果。 一、效果图&#xff1a; 二…...

书生·浦语大模型实战营-学习笔记1

目录 书生浦语大模型全链路开源体系数据集预训练微调评测部署多智能体 视频地址&#xff1a; (1)书生浦语大模型全链路开源体系 开源工具github&#xff1a; https://github.com/InternLM/InternLM 书生浦语大模型全链路开源体系 这次视频中介绍了由上海人工智能实验室OpenMMLa…...

ELF解析03 - 加载段

本文主要讨论 mmap 函数以及如何使用 mmap 函数来加载一个 ELF 的可加载段。 01纠错 Android 8 及以后是会读取 section header 的&#xff0c;但不是所有的 section 都会读取。 https://cs.android.com/android/platform/superproject/main//main:bionic/linker/linker_phdr…...

Mysql——索引相关的数据结构

索引 引入 我们知道&#xff0c;数据库查询是数据库的最主要功能之一。我们都希望查询数据的速度能尽可能的快&#xff0c;因此数据库系统的设计者会从查询算法的角度进行优化。最基本的查询算法当然是顺序查找&#xff08;linear search&#xff09;&#xff0c;这种复杂度为…...

无代码DIY图像检索

软件环境准备 可参见《HuggingFists-低代码玩转LLM RAG-准备篇》中的HuggingFists安装及Milvus安装。 流程环境准备 图片准备 进入HuggingFists内置的文件系统&#xff0c;数据源->文件系统->sengee_fs_settings_201创建Image文件夹将事先准备的多张相同或不同种类的图…...

Elasticsearch--Master选举

角色 主节点&#xff08;active master&#xff09;&#xff1a;一般指的是活跃的主节点&#xff0c;避免负载任务&#xff0c;主节点主要用来管理集群&#xff0c;专用master节点仍将充当协调节点 候选节点&#xff08;master-eligible nodes&#xff09;&#xff1a;默认具备…...

微服务实战系列之Filter

前言 Filter&#xff0c;又名过滤器&#xff0c;当然不是我们日常中见到的&#xff0c;诸如此类构件&#xff1a; 而应该是微服务中常使用的&#xff0c;诸如此类&#xff08;图片来自官网&#xff0c;点击可查看原图&#xff09;&#xff1a; 一般用于字符编码转换&#xf…...

使用GPT大模型调用工具链

本文特指openai使用sdk的方式调用工具链。 安装openai pip install openai export OPENAI_API_KEY"YOUR OPENAI KEY" 定义工具函数 from openai import OpenAI import jsonclient OpenAI() #工具函数 def get_current_weather(location, unit"fahrenheit&q…...

C语言实现bmp图像底层数据写入与创建

要用C语言实现bmp图像底层数据写入进而创建一张bmp图像&#xff0c;需要对bmp图像文件格式非常了解&#xff0c;如果不太熟悉bmp图像文件格式请先移步bmp图像文件格式超详解 创建bmp图像文件的方式有很多&#xff0c;比如用halcon&#xff0c;用qt&#xff0c;这些都是把已经画…...

基于BP神经网络的定位算法,基于BP神经网络定位预测

目录 摘要 BP神经网络参数设置及各种函数选择 参数设置 训练函数 传递函数 学习函数 性能函数 显示函数 前向网络创建函数 BP神经网络训练窗口详解 训练窗口例样 训练窗口四部详解 基于BP神经网络的定位算法,基于BP神经网络定位预测 代码下载:基于BP神经网络的定位算法,基于…...

Java Http各个请求类型详细介绍

1. 前言 在Spring Boot框架中&#xff0c;HTTP请求类型是构建Web应用程序的重要组成部分。常见的请求类型包括GET、POST、PUT和DELETE&#xff0c;每种类型都有其特定的用途和特点。本文将详细比较这四种请求类型&#xff0c;帮助您在开发过程中做出明智的选择。 2. GET请求…...

python函数装饰器参数统计调用时间和次数

1 python函数装饰器参数统计调用时间和次数 python在函数装饰器外层定义一个函数生成封闭作用域来保存装饰器入参&#xff0c;供装饰器使用。 1.1 装饰器统计调用时间和次数 描述 通过类的可调用实例装饰器来统计函数每次调用时间和总调用时间&#xff0c;以及调用次数。 …...

机器学习之集成学习AdaBoost

概念 AdaBoost(Adaptive Boosting)是一种迭代的集成学习算法,其主要目标是通过组合多个弱学习器来创建一个强大的模型。以下是AdaBoost算法的主要步骤: 初始化样本权重: 为每个训练样本分配相等的权重,通常设为 w i = 1 N w_i = \frac{1}{N} w...

行云部署成长之路 -- 慢 SQL 优化之旅 | 京东云技术团队

当项目的SQL查询慢得像蜗牛爬行时&#xff0c;用户的耐心也在一点点被消耗&#xff0c;作为研发&#xff0c;我们可不想看到这样的事。这篇文章将结合行云部署项目的实践经验&#xff0c;带你走进SQL优化的奇妙世界&#xff0c;一起探索如何让那些龟速的查询飞起来&#xff01;…...

Windows权限提升

0x01 简介 提权可分为纵向提权与横向提权&#xff1a; 纵向提权&#xff1a;低权限角色获得高权限角色的权限&#xff1b; 横向提权&#xff1a;获取同级别角色的权限。 Windows常用的提权方法有&#xff1a;系统内核溢出漏洞提权、数据库提权、错误的系统配置提权、组策略首…...

win系统搭建Minecraft世界服务器,MC开服教程,小白开服教程

Windows系统搭建我的世界世界服务器&#xff0c;Minecraft开服教程&#xff0c;小白开服教程&#xff0c;MC 1.19.4版本服务器搭建教程。 此教程使用 Mohist 1.19.4 服务端&#xff0c;此服务端支持Forge模组和Bukkit/Spigot/Paper插件&#xff0c;如果需要开其他服务端也可参…...

word2vec中的CBOW和Skip-gram

word2cev简单介绍 Word2Vec是一种用于学习词嵌入&#xff08;word embeddings&#xff09;的技术&#xff0c;旨在将单词映射到具有语义关联的连续向量空间。Word2Vec由Google的研究员Tomas Mikolov等人于2013年提出&#xff0c;它通过无监督学习从大规模文本语料库中学习词汇…...

在ios上z-index不起作用问题的总结

最近在维护一个H5老项目时&#xff0c;遇到一个问题&#xff0c;就是在ios上z-index不起作用&#xff0c;在安卓上样式都是好的。 项目的架构组成是vue2.x vux vuex vue-router等 用的UI组件库是vux 在页面中有一个功能点&#xff0c;就是点选择公司列表的时候&#xff0c;会…...

力扣labuladong一刷day59天动态规划

力扣labuladong一刷day59天动态规划 文章目录 力扣labuladong一刷day59天动态规划一、509. 斐波那契数二、322. 零钱兑换 一、509. 斐波那契数 题目链接&#xff1a;https://leetcode.cn/problems/fibonacci-number/description/ 思路&#xff1a;这是非常典型的一道题&#x…...

pyenv环境找不到sqlite:No module named _sqlite3

前言 一般遇到这个问题都在python版本管理或者虚拟环境切换中遇到&#xff0c;主要有两个办法解决&#xff0c;如下&#xff1a; 解决方法1 如果使用的pyenv管理python环境时遇到没有_sqlite3 库&#xff0c;可以将当前pyenv的python环境卸载 pyenv uninstall xxx然后在系统…...

在rocky linux 9.5上在线安装 docker

前面是指南&#xff0c;后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

visual studio 2022更改主题为深色

visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中&#xff0c;选择 环境 -> 常规 &#xff0c;将其中的颜色主题改成深色 点击确定&#xff0c;更改完成...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业&#xff0c;项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升&#xff0c;传统的管理模式已经难以满足现代工程的需求。过去&#xff0c;许多企业依赖手工记录、口头沟通和分散的信息管理&#xff0c;导致效率低下、成本失控、风险频发。例如&#…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式&#xff08;Singleton Pattern&#…...

P3 QT项目----记事本(3.8)

3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效&#xff0c;它能挖掘数据中的时序信息以及语义信息&#xff0c;但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN&#xff0c;但是…...

中医有效性探讨

文章目录 西医是如何发展到以生物化学为药理基础的现代医学&#xff1f;传统医学奠基期&#xff08;远古 - 17 世纪&#xff09;近代医学转型期&#xff08;17 世纪 - 19 世纪末&#xff09;​现代医学成熟期&#xff08;20世纪至今&#xff09; 中医的源远流长和一脉相承远古至…...

C++.OpenGL (14/64)多光源(Multiple Lights)

多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...

宇树科技,改名了!

提到国内具身智能和机器人领域的代表企业&#xff0c;那宇树科技&#xff08;Unitree&#xff09;必须名列其榜。 最近&#xff0c;宇树科技的一项新变动消息在业界引发了不少关注和讨论&#xff0c;即&#xff1a; 宇树向其合作伙伴发布了一封公司名称变更函称&#xff0c;因…...