返回
用Pygame打造令人惊叹的烟花 spettacolo
后端
2024-01-16 12:19:15
用Pygame点燃夜空
烟花,那些在漆黑的夜空中绽放的刹那间美丽,一直是节日庆祝和特殊场合的标志。想象一下用代码重现这种壮观,用Pygame为您的屏幕带来令人惊叹的雪夜烟花 spettacolo。
准备工作
要踏上这场编程之旅,您需要:
- Python(推荐3.10或更高版本)
- Pygame(推荐2.1.2或更高版本)
- 一些编程基础和对图形界面概念的理解
搭建画布
首先,让我们用Pygame创建一个画布来展示我们的烟花表演。这就像搭建一个虚拟舞台,为我们的视觉奇观做准备。
import pygame
# 初始化 Pygame
pygame.init()
# 设置窗口大小
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
# 设置背景颜色
screen.fill((0, 0, 0)) # 黑色
点亮夜空
现在,让我们进入烟花表演的精髓:创建烟花本身。每个烟花都是一个由粒子组成的系统,这些粒子沿着轨迹运动,在到达顶点后爆炸成五颜六色的光彩。
# 创建一个粒子类
class Particle:
def __init__(self, pos, vel, radius, color):
self.pos = pos # 粒子的位置
self.vel = vel # 粒子的速度
self.radius = radius # 粒子的半径
self.color = color # 粒子的颜色
def update(self):
# 更新粒子的位置
self.pos += self.vel
def draw(self, screen):
# 绘制粒子
pygame.draw.circle(screen, self.color, self.pos, self.radius)
有了粒子,我们就可以创建烟花并使其在屏幕上爆炸。
# 创建一个烟花类
class Firework:
def __init__(self, pos, color):
self.pos = pos # 烟花发射的位置
self.color = color # 烟花的颜色
self.particles = [] # 烟花的粒子列表
def explode(self):
# 创建烟花的粒子
for i in range(100):
# 随机生成粒子的速度和角度
angle = random.uniform(0, 2 * math.pi)
speed = random.uniform(5, 10)
vel = (speed * math.cos(angle), speed * math.sin(angle))
# 创建一个粒子并将其添加到粒子列表中
self.particles.append(Particle(self.pos, vel, 2, self.color))
def update(self):
# 更新烟花的粒子
for particle in self.particles:
particle.update()
def draw(self, screen):
# 绘制烟花的粒子
for particle in self.particles:
particle.draw(screen)
下雪了!
为了让我们的雪夜烟花场景更加逼真,让我们添加一些飘落的雪花。
# 创建一个雪花类
class Snowflake:
def __init__(self, pos, vel):
self.pos = pos # 雪花的初始位置
self.vel = vel # 雪花的初始速度
def update(self):
# 更新雪花的位置
self.pos += self.vel
def draw(self, screen):
# 绘制雪花
pygame.draw.circle(screen, (255, 255, 255), self.pos, 2)
创建交互
通过鼠标单击来发射烟花,让我们的烟花表演变得更具互动性。
# 主循环
running = True
while running:
# 处理事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.MOUSEBUTTONDOWN:
# 在鼠标点击的位置创建一个烟花
firework = Firework(event.pos, (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)))
firework.explode()
# 更新和绘制雪花
for snowflake in snowflakes:
snowflake.update()
snowflake.draw(screen)
# 更新和绘制烟花
for firework in fireworks:
firework.update()
firework.draw(screen)
# 更新显示
pygame.display.update()
庆祝时刻
现在,当您运行程序时,您将看到一场令人惊叹的雪夜烟花表演,点亮您的屏幕,庆祝节日或任何特殊场合。您可以通过调整代码中的参数来定制烟花的效果,例如粒子数量、速度和颜色。