python代码放烟花
时间: 2025-01-02 19:35:17 浏览: 5
### 使用Pygame实现烟花效果
为了创建一个简单的烟花动画,在Python中可以利用`pygame`库。下面提供了一个完整的代码示例,该例子展示了如何通过随机生成不同颜色和位置的粒子来模拟烟花爆炸的效果。
```python
import pygame
import random
from math import sin, cos, radians
# 初始化 Pygame 并设置屏幕尺寸
pygame.init()
screen_width = 800
screen_height = 600
win = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption("Fireworks Simulation")
class Particle:
def __init__(self, x, y, color):
self.x = x
self.y = y
self.color = color
angle = radians(random.randint(0, 360)) # 随机角度转换成弧度制
speed = random.uniform(2, 7) # 设置速度范围
self.dx = speed * cos(angle) # 计算水平方向的速度分量
self.dy = -speed * sin(angle) # 计算垂直方向的速度分量 (注意负号表示向上运动)
def draw_firework():
particles = []
for _ in range(100): # 创建一定数量的粒子
particle_color = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))
particles.append(Particle(screen_width / 2, screen_height, particle_color))
while True:
win.fill((0, 0, 0)) # 填充背景色为黑色
for event in pygame.event.get(): # 处理退出事件
if event.type == pygame.QUIT:
pygame.quit()
for p in particles[:]:
pygame.draw.circle(win, p.color, (int(p.x), int(p.y)), 4) # 绘制圆形代表粒子
p.x += p.dx # 更新粒子的位置坐标
p.y += p.dy
p.dy += 0.1 # 加上重力加速度使粒子下落加速
if p.y >= screen_height or abs(p.dx) < 0.1 and abs(p.dy) < 0.1: # 当粒子到达底部或几乎静止时移除它们
particles.remove(p)
pygame.display.update() # 刷新显示窗口
pygame.time.delay(30) # 控制帧率
draw_firework()
```
此段程序定义了一个名为`Particle`类用来描述单个火花的行为模式,并且有一个函数叫做`draw_firework()`负责初始化并持续更新整个场景中的所有粒子状态直到关闭应用程序为止[^1]。
阅读全文