海口网站设计厦门网站建设教学
- 作者: 五速梦信息网
- 时间: 2026年03月21日 10:58
当前位置: 首页 > news >正文
海口网站设计,厦门网站建设教学,wordpress 添加html链接后404,葫芦岛网站建设找思路目录 系列文章 写在前面 技术需求 完整代码 下载代码 代码分析
- 程序初始化与显示设置
- 烟花类 (Firework)
- 粒子类 (Particle)
- 痕迹类 (Trail)
- 烟花更新与显示
- 主函数 (fire)
- 游戏循环
- 总结 注意事项 写在后面 系列文章 序号直达链接爱… 目录 系列文章 写在前面 技术需求 完整代码 下载代码 代码分析
- 程序初始化与显示设置
- 烟花类 (Firework)
- 粒子类 (Particle)
- 痕迹类 (Trail)
- 烟花更新与显示
- 主函数 (fire)
- 游戏循环
- 总结
注意事项
写在后面 系列文章
序号直达链接爱心系列1Python制作一个无法拒绝的表白界面2Python满屏飘字表白代码3Python无限弹窗满屏表白代码4Python李峋同款可写字版跳动的爱心5Python流星雨代码6Python漂浮爱心代码7Python爱心光波代码8Python普通的玫瑰花代码9Python炫酷的玫瑰花代码10Python多彩的玫瑰花代码节日系列1Python动漫风烟花秀代码2Python新年烟花秀代码3Python圣诞礼物代码4Python画圣诞树代码5Python可爱版圣诞树丨绿色6Python可爱版圣诞树丨粉色7Python大雪纷飞代码8Python生日蛋糕代码9Python五彩气球代码10Python国庆祝福代码11Python万圣礼物代码12Python愚人节礼物代码13Python浪漫星空代码14Python樱花树代码动漫系列1Python名侦探柯南2Python喜羊羊3Python懒羊羊4Python沸羊羊5Python小灰灰6Python小香香7Python灰太狼8Python海绵宝宝9Python哆啦A梦10Python凯蒂猫11Python猫和老鼠12Python草莓熊13Python迷你皮卡丘14Python高级皮卡丘15Python豪华皮卡丘16Python史迪仔17Python小熊猫18Python蜘蛛侠19Python可爱版蜡笔小新20Python萌萌的蜡笔小新21Python罗小黑22Python猪猪侠炫酷系列1 Python张万森下雪了2Python一闪一闪亮晶晶3Python黑客帝国代码雨4Python七彩花朵5Python模拟3D星空6Python金榜题名7Python满天星
写在前面
Python语言实现新年烟花秀的完整代码。
技术需求 Pygame 库Pygame 是 Python 的一个游戏开发库用于制作视频游戏和图形应用程序。在此代码中Pygame 被用来创建图形界面、绘制图形、处理用户输入和管理时间帧率。通过 pg.init() 初始化 Pygamepg.display.set_mode() 创建屏幕pg.draw.circle() 绘制圆形等操作。 随机数生成代码广泛使用了 Python 的 random 库来生成随机数这些随机数控制了烟花和粒子的颜色、速度、方向、爆炸大小等。ra.randint() 和 ra.uniform() 用于生成随机的整数和浮动数值模拟烟花的自然和不确定性。 物理模拟在代码中物理效果主要体现在重力和粒子的运动上。使用 Pygame 提供的 Vector2 类来表示粒子的二维坐标和速度模拟烟花粒子的运动和加速度。通过 apply_force() 和 move() 方法粒子会受重力等外力影响产生自然的运动轨迹。 粒子系统烟花爆炸产生的效果是通过粒子系统实现的。每个烟花爆炸时会生成多个粒子对象每个粒子都有自己的颜色、大小、速度和生命周期。粒子不断地移动并逐渐衰退最终消失。粒子系统模拟了真实世界中烟花散开后的效果。 路径追踪Trail每个粒子都有一个尾迹Trail在移动过程中粒子在自己的路径上留下痕迹这种效果通过记录粒子之前的多个位置来实现。Trail 类用于生成和显示粒子的路径。尾迹颜色和大小逐渐变化模拟烟花轨迹逐渐消失的效果。 图形渲染通过 Pygame 提供的 pg.draw.circle() 和 screen.blit() 方法代码绘制了粒子、烟花和文本。screen.fill() 用于填充背景色确保每一帧都能清除掉前一帧的内容。每个粒子和烟花的显示由 show() 方法控制确保它们在屏幕上正确呈现。 动态文本渲染使用 pg.font.SysFont() 和 font.render() 渲染文本。代码将 Happy New Year! 文本以特定字体和颜色显示在屏幕中央模拟节日庆祝的氛围。 事件处理和程序控制代码通过 pg.event.get() 获取并处理 Pygame 中的事件。pg.QUIT 事件用于监听关闭窗口的操作。游戏的主循环中使用了 running 标志来控制程序是否继续运行。通过 clock.tick(99) 控制帧率确保每秒运行 99 帧。 对象导向编程代码采用了面向对象的编程方式定义了多个类如 Firework、Particle 和 Trail来封装烟花、粒子和痕迹的行为和属性。这种方式有助于代码的结构化和模块化便于扩展和维护。
完整代码 import pygame as pg import random as ra import mathpg.init() pg.display.set_caption()winScreen pg.display.Info() screenWidth winScreen.current_w screenHeight winScreen.current_hvector pg.math.Vector2trail_colors [(45, 45, 45), (60, 60, 60), (75, 75, 75), (125, 125, 125), (150, 150, 150)]# 烟花类 class Firework:def init(self):# 随机生成颜色self.colour (ra.randint(0, 255), ra.randint(0, 255), ra.randint(0, 255))# 随机生成三种颜色self.colours ((ra.randint(0, 255), ra.randint(0, 255), ra.randint(0, 255)),(ra.randint(0, 255), ra.randint(0, 255), ra.randint(0, 255)),(ra.randint(0, 255), ra.randint(0, 255), ra.randint(0, 255)))# 生成一个表示发射出的火花的粒子对象self.firework Particle(ra.randint(0,screenWidth), screenHeight, True, self.colour)# 初始化爆炸状态为 Falseself.exploded Falseself.particles []# 爆炸产生的粒子数量范围self.min_max_particles vector(666, 999)def update(self, win):g vector(0, ra.uniform(0.15, 0.4))if not self.exploded:# 给发射出的火花施加重力self.firework.apply_force(g)self.firework.move()for tf in self.firework.trails:tf.show(win)self.show(win)if self.firework.vel.y 0:self.exploded Trueself.explode()else:for particle in self.particles:# 给爆炸产生的粒子施加随机力particle.apply_force(vector(g.x ra.uniform(-1, 1) / 20, g.y / 2 (ra.randint(1, 8) / 100)))particle.move()for t in particle.trails:t.show(win)particle.show(win)def explode(self):amount ra.randint(int(self.min_max_particles.x), int(self.min_max_particles.y))for i in range(amount):# 在爆炸位置生成粒子对象并添加到粒子列表中self.particles.append(Particle(self.firework.pos.x, self.firework.pos.y, False, self.colours))def show(self, win):# 绘制发射出的火花pg.draw.circle(win, self.colour, (int(self.firework.pos.x), int(self.firework.pos.y)), self.firework.size)def remove(self):if self.exploded:for p in self.particles:if p.remove is True:self.particles.remove(p)if len(self.particles) 0:return Trueelse:return False…… 下载代码 下载链接https://pan.quark.cn/s/b5eb09ad9065 代码分析 这段代码是使用 Python 和 Pygame 库实现的一个烟花动画程序。其主要功能是模拟烟花在屏幕上绽放的效果结合了粒子系统和动态效果通过类和方法进行模块化设计具有较强的可扩展性。以下是对这段代码的详细分析分为几个部分程序初始化、类设计、粒子和火花效果的实现、显示与更新的过程以及主函数的运行机制。 - 程序初始化与显示设置 程序开始时调用 pg.init() 来初始化 Pygame 库这个调用非常关键它会为所有 Pygame 模块做好初始化工作。接着使用 pg.display.set_caption() 设置窗口标题为烟花的表情符号。然后通过 pg.display.Info() 获取当前屏幕的分辨率 screenWidth 和 screenHeight 分别存储屏幕的宽度和高度用于后续创建窗口时设置显示区域大小。 vector pg.math.Vector2 用于简化代码中二维向量的运算。pg.math.Vector2 提供了对二维向量的支持可以很方便地进行加法、减法、乘法等操作。
- 烟花类 (Firework) class Firework:def init(self):self.colour (ra.randint(0, 255), ra.randint(0, 255), ra.randint(0, 255))self.colours ((ra.randint(0, 255), ra.randint(0, 255), ra.randint(0, 255)),(ra.randint(0, 255), ra.randint(0, 255), ra.randint(0, 255)),(ra.randint(0, 255), ra.randint(0, 255), ra.randint(0, 255)))self.firework Particle(ra.randint(0,screenWidth), screenHeight, True, self.colour)self.exploded Falseself.particles []self.min_max_particles vector(666, 999)Firework 类是整个烟花效果的核心。该类模拟了烟花从发射到爆炸的全过程。在构造函数中首先随机生成烟花的颜色 self.colour并且生成三种不同的颜色 self.colours这些颜色将在爆炸后用于粒子的显示。 self.firework Particle(ra.randint(0,screenWidth), screenHeight, True, self.colour) 创建了一个粒子对象模拟烟花发射时的火花。self.exploded 用于标记烟花是否已经爆炸self.particles 存储爆炸后的所有粒子。self.min_max_particles 表示爆炸后产生粒子的数量范围。
- 粒子类 (Particle) class Particle:def init(self, x, y, firework, colour):self.firework fireworkself.pos vector(x, y)self.origin vector(x, y)self.radius 25self.remove Falseself.explosion_radius ra.randint(15, 25)self.life 0self.acc vector(0, 0)self.trails []self.prev_posx [-10] * 10self.prev_posy [-10] * 10if self.firework:self.vel vector(0, -ra.randint(17, 20))self.size 5self.colour colourfor i in range(5):self.trails.append(Trail(i, self.size, True))else:self.vel vector(ra.uniform(-1, 1), ra.uniform(-1, 1))self.vel.x * ra.randint(7, self.explosion_radius 2)self.vel.y * ra.randint(7, self.explosion_radius 2)self.size ra.randint(2, 4)self.colour ra.choice(colour)for i in range(5):self.trails.append(Trail(i, self.size, False))Particle 类代表了烟花中的单个粒子。它包含了烟花发射和爆炸过程中粒子的所有物理属性和视觉效果。 self.pos 是粒子的位置self.origin 是初始位置。self.vel 和 self.acc 分别表示粒子的速度和加速度使用 pg.math.Vector2 进行向量运算。self.trails 存储粒子的痕迹烟花尾迹它是一个列表包含多个 Trail 对象。self.life 控制粒子的生命周期self.remove 标记粒子是否应该被移除。 在构造函数中依据粒子是烟花发射出来的火花还是爆炸后的粒子设置了不同的初速度、大小、颜色等属性。火花的速度较大并且其尾迹动态显示爆炸后的粒子速度较小颜色随机。
- 痕迹类 (Trail) Trail 类表示粒子尾迹的效果。在构造函数中self.dynamic 用于区分动态尾迹和静态尾迹。动态尾迹的颜色和大小会随着时间变化静态尾迹则显示为固定的颜色和较小的尺寸。
- 烟花更新与显示 update 函数用于更新所有烟花的状态。它遍历每个烟花对象调用其 update 方法来处理烟花的动画效果。如果某个烟花的所有粒子已经移除则从 fireworks 列表中删除该烟花。
- 主函数 (fire) fire 函数是程序的主入口负责创建窗口、初始化时钟、设置烟花效果和显示文本。 首先使用 pg.display.set_mode 创建窗口并根据屏幕大小动态设置窗口的尺寸。接着创建一个时钟对象 clock用于控制游戏的帧率。fireworks 列表初始化了两个烟花对象。文本部分使用 pg.font.SysFont 加载系统字体生成一个显示“Happy New Year!”的文本并计算文本在屏幕上的位置。
- 游戏循环 while running:clock.tick(99)for event in pg.event.get():if event.type pg.QUIT:running Falsescreen.fill((20, 20, 30))screen.blit(rendered_text, (text_x, text_y))if ra.randint(0, 10) 1:fireworks.append(Firework())update(screen, fireworks)游戏进入主循环每一帧更新烟花的状态并显示在屏幕上。通过 clock.tick(99) 控制帧率为 99 帧每秒。每次循环中如果有退出事件则终止程序。窗口背景色填充为深色 (20, 20, 30)然后绘制上一步计算出的文本。 在每一帧中可能会随机生成新的烟花对象通过 ra.randint(0, 10) 1 来决定然后更新所有烟花的显示效果。
- 总结 这段代码通过精心设计的 Firework、Particle 和 Trail 类以及通过粒子系统模拟了烟花从发射到爆炸的过程。每个粒子都有自己的物理行为如速度、加速度和尾迹效果且随着时间的推移粒子的生命周期逐渐结束最终消失。这段代码不仅展示了烟花的动画效果还包含了多种粒子动态效果如随机颜色、速度、尾迹 注意事项 如遇到问题no module named pygame请在终端输入pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pygame等待pygame库安装完成后再运行程序 写在后面 我是一只有趣的兔子感谢你的喜欢
- 上一篇: 海口网站如何制作关于内网站建设的请示
- 下一篇: 海口网站制作北京网站托管的公司哪家好
相关文章
-
海口网站如何制作关于内网站建设的请示
海口网站如何制作关于内网站建设的请示
- 技术栈
- 2026年03月21日
-
海口网站建设中心专业网站开发设计
海口网站建设中心专业网站开发设计
- 技术栈
- 2026年03月21日
-
海口网站建设设计一款app是如何制作出来的
海口网站建设设计一款app是如何制作出来的
- 技术栈
- 2026年03月21日
-
海口网站制作北京网站托管的公司哪家好
海口网站制作北京网站托管的公司哪家好
- 技术栈
- 2026年03月21日
-
海口有做棋牌娱乐网站的吗wordpress价格计算
海口有做棋牌娱乐网站的吗wordpress价格计算
- 技术栈
- 2026年03月21日
-
海口制作网站公司网站建设方向
海口制作网站公司网站建设方向
- 技术栈
- 2026年03月21日
