```python
import pygame
import random
import math
初始化pygame
pygame.init()
设置屏幕尺寸
screen_width = 800
screen_height = 600
screen = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption("Fireworks")
定义烟花粒子类
class Particle(pygame.sprite.Sprite):
def __init__(self, x, y):
super().__init__()
self.image = pygame.Surface((5, 5))
self.image.fill((255, 255, 255))
self.rect = self.image.get_rect()
self.rect.center = (x, y)
self.gravity = 0.2
self.x_velocity = random.uniform(-1, 1)
self.y_velocity = random.uniform(-5, -1)
def update(self):
self.x_velocity *= 0.99
self.y_velocity += self.gravity
self.rect.x += self.x_velocity
self.rect.y += self.y_velocity
创建烟花实例
fireworks = pygame.sprite.Group()
max_fireworks = 8
游戏循环
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
生成新的烟花
if random.randint(0, 100) < 5: 每100帧生成一个新的烟花
fireworks.add(Particle(random.randint(0, screen_width), random.randint(0, screen_height)))
更新烟花位置
for firework in fireworks.sprites():
firework.update()
如果烟花离开屏幕,则移除
if firework.rect.bottom < 0:
fireworks.remove(firework)
清除屏幕
screen.fill((0, 0, 0))
绘制烟花
for firework in fireworks.sprites():
screen.blit(firework.image, firework.rect)
更新屏幕显示
pygame.display.flip()
退出游戏
pygame.quit()
这段代码创建了一个简单的烟花效果,其中包含以下几个部分:
1. 初始化`pygame`并设置屏幕尺寸。
2. 定义一个`Particle`类,用于创建烟花粒子,每个粒子有自己的位置、速度和重力。
3. 在游戏循环中,随机生成新的烟花粒子,并更新它们的位置。
4. 如果烟花粒子离开屏幕,则将其从精灵组中移除。
5. 清除屏幕,绘制所有烟花粒子,并更新屏幕显示。
你可以运行这段代码来查看烟花效果。如果你想要更复杂的效果,可以修改`Particle`类的`update`方法,增加更多属性如颜色变化、形状变化等。