欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 焦点 > Python新春烟花

Python新春烟花

2025/1/30 2:06:04 来源:https://blog.csdn.net/m0_68111267/article/details/145372094  浏览:    关键词:Python新春烟花

fireworks

系列专栏

  • 《Python趣味编程》
  • 《C/C++趣味编程》
  • 《HTML趣味编程》
  • 《Java趣味编程》

系列文章

序号直达链接
爱心系列
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实现炫酷新春烟花动画的完整代码。

技术需求

  1. Pygame库

    • Pygame是一个专门用于游戏开发的Python库,提供了图形绘制、事件处理、音频播放等功能。在此代码中,Pygame用于创建窗口、处理用户事件、绘制图形(如粒子、烟花和文字)等。
  2. 粒子系统

    • 粒子系统是一种模拟物理现象的技术,通常用于创建爆炸、烟雾、火焰等效果。在这段代码中,粒子系统用于模拟烟花的爆炸效果。每个粒子有位置、速度、生命周期等属性,并受重力影响,模拟烟花爆炸后的飞散效果。
  3. 物理模拟

    • 代码中的粒子受重力影响,这一效果通过在update()方法中调整vy(垂直速度)来模拟。粒子逐渐加速向下运动,模仿现实中烟花爆炸后物体的运动轨迹。
  4. 随机数生成

    • 随机数生成用于控制烟花的颜色、发射角度、速度和生命周期等。在每次生成新的烟花时,程序会随机选择颜色、粒子数量、粒子角度等,使得每次烟花效果都是独一无二的。
  5. 图形绘制

    • 使用pygame.draw.circle()函数绘制粒子和文字,展示烟花的动态效果和“Happy New Year!”的祝福。pygame.font.SysFont()则用于加载系统字体并绘制文本。
  6. 事件处理

    • 通过pygame.event.get()捕获并处理用户事件,如关闭窗口等,使得程序能够响应用户操作,保证应用的交互性。
  7. 动画控制

    • 使用帧率控制(通过clock.tick(FPS))来保证动画流畅,并通过time.sleep(0.05)稍微减慢每帧的更新,使得烟花效果能够更清晰地展示。
  8. 面向对象编程(OOP)

    • 通过定义ParticleFirework类,程序采用了面向对象编程的思想,将粒子和烟花的行为封装在不同的类中,使得代码更加结构化、易于维护和扩展。

完整代码

import pygame
import random
import math
import time# Initialize Pygame
pygame.init()# Constants
SCREEN_WIDTH = 1200
SCREEN_HEIGHT = 700
BACKGROUND_COLOR = (0, 0, 0)  # Black
FPS = 60# Screen setup
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
pygame.display.set_caption('新春烟花')# Font setup using system default font
font = pygame.font.SysFont("Comic Sans MS", 100)  # You can replace "Arial" with any system font
text_color = (255, 255, 255)  # White color for the text# Particle class
class Particle:def __init__(self, x, y, color, angle, speed, life):self.x = xself.y = yself.color = colorself.angle = angleself.speed = speedself.life = lifeself.radius = 2self.vx = math.cos(angle) * speedself.vy = math.sin(angle) * speeddef update(self):self.x += self.vxself.y += self.vyself.life -= 1self.vy += 0.05  # Gravity effectdef draw(self):pygame.draw.circle(screen, self.color, (int(self.x), int(self.y)), self.radius)……

代码分析

这段代码使用了Python的Pygame库来创建一个动态的新春烟花显示效果。该程序模拟了烟花的发射、爆炸以及粒子效果,并在屏幕中央显示了“Happy New Year!”的祝福文字。我们将从程序结构、核心功能、代码实现和细节等方面进行详细分析。

1. 程序结构

程序的主体由几个重要部分组成:

  • Pygame初始化和常量定义: 初始化Pygame库并定义一些常量,如屏幕的宽度和高度、背景颜色、帧率等。
  • Particle类: 负责定义烟花中的粒子及其行为(位置、速度、生命周期等)。
  • Firework类: 负责烟花的爆炸和粒子的生成与更新。
  • 主循环(main函数): 负责处理游戏事件、更新画面、发射烟花和显示文字等。

2. Pygame初始化

pygame.init()

这行代码初始化了Pygame库,允许程序使用Pygame的功能,如绘制图形、播放音效、处理事件等。初始化后,我们可以通过Pygame提供的各种方法来控制窗口、图形和声音等。

3. 常量和屏幕设置

SCREEN_WIDTH = 1200
SCREEN_HEIGHT = 700
BACKGROUND_COLOR = (0, 0, 0)  # Black
FPS = 60

在此处,定义了几个常量来设置窗口的宽度、长度、背景颜色和帧率。屏幕宽度为1200像素,高度为700像素,背景颜色为黑色,帧率为60帧每秒(FPS)。这些常量为程序的整体布局和动画流畅度提供了基础。

接下来,使用以下代码创建一个Pygame窗口,并设置标题:

screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
pygame.display.set_caption('新春烟花')

pygame.display.set_mode()方法创建一个宽1200像素,高700像素的屏幕,pygame.display.set_caption()设置窗口标题为“新春烟花”。

4. 字体设置

font = pygame.font.SysFont("Comic Sans MS", 100)
text_color = (255, 255, 255)  # White color for the text

通过pygame.font.SysFont()方法,程序使用了“Comic Sans MS”字体,字号为100,用来绘制屏幕上的文字(“Happy New Year!”)。文字的颜色设置为白色(RGB为255, 255, 255)。

5. Particle类

Particle类用于表示烟花中的每一个粒子。每个粒子有其独特的属性:位置(x, y)、颜色(color)、速度(vx, vy)、角度(angle)、生命周期(life)等。

class Particle:def __init__(self, x, y, color, angle, speed, life):self.x = xself.y = yself.color = colorself.angle = angleself.speed = speedself.life = lifeself.radius = 2self.vx = math.cos(angle) * speedself.vy = math.sin(angle) * speed
  • x, y:粒子初始的坐标。
  • color:粒子的颜色。
  • angle:粒子的发射角度,单位为弧度。
  • speed:粒子的初始速度。
  • life:粒子的生存周期。
  • vx, vy:粒子的水平和垂直速度,由角度和速度计算得出。

update()方法负责更新粒子的位置,并考虑了重力效应:

def update(self):self.x += self.vxself.y += self.vyself.life -= 1self.vy += 0.05  # Gravity effect

每帧,粒子的xy坐标根据其速度vxvy进行更新,life减1表示粒子逐渐消失,同时垂直速度(vy)增加模拟重力的作用。

draw()方法通过pygame.draw.circle()绘制粒子:

def draw(self):pygame.draw.circle(screen, self.color, (int(self.x), int(self.y)), self.radius)

6. Firework类

Firework类用于模拟烟花的爆炸过程和管理其中的粒子。

  • x, y:烟花的发射位置。
  • color:烟花的颜色。
  • num_particles:每次爆炸时生成的粒子数,默认值为100。
  • spread:粒子爆炸的角度范围,默认值为2 * math.pi,表示360度范围内。

explode()方法负责生成烟花爆炸时的粒子:每次烟花爆炸时,会随机生成若干粒子(角度、速度和生命周期是随机的),并将其加入particles列表。

update()方法负责更新粒子状态并检查是否爆炸。

7. 主循环

主循环是程序的核心部分,负责处理事件、更新画面和控制烟花的生成与显示。

  • 事件处理: 通过pygame.event.get()获取事件并检查是否退出程序。
  • 烟花发射: 以30%的概率随机发射新烟花。
  • 更新与绘制烟花: 每帧更新所有烟花的状态并绘制它们。
  • 文字显示: 在屏幕中央绘制“Happy New Year!”的祝福文字。

8. 总结

这段代码通过Pygame实现了一个简单但美丽的烟花效果。它利用了粒子系统来模拟烟花爆炸后的粒子运动,并通过随机化粒子速度、角度和生命周期,确保每次爆炸都有独特的效果。此外,代码也通过主循环实时更新烟花的状态并在屏幕上显示祝福文字,为新春节日增添了节日氛围。

写在后面

我是一只有趣的兔子,感谢你的喜欢!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com