Python写个烟花
时间: 2023-12-25 17:28:40 浏览: 75
以下是Python模拟烟花的代码,使用了pygame库来实现窗口和动画效果:
```python
import pygame
import random
# 初始化pygame
pygame.init()
# 设置窗口大小和标题
screen = pygame.display.set_mode((800, 600))
pygame.display.set_caption("Fireworks")
# 定义烟花类
class Firework:
def __init__(self):
self.x = random.randint(0, 800) # 随机生成烟花的位置
self.y = random.randint(0, 600)
self.color = (random.randint(0,255), random.randint(0, 255), random.randint(0, 255)) # 随机生成烟花的颜色
self.radius = 1 # 初始半径为1
self.max_radius = random.randint(50, 100) # 随机生成烟花的最大半径
self.speed = random.randint(1, 5) # 随机生成烟花的速度
self.exploded = False # 初始状态为未爆炸
def update(self):
if not self.exploded:
self.radius += self.speed # 半径增加
if self.radius >= self.max_radius:
self.exploded = True # 达到最大半径后爆炸
def draw(self):
if not self.exploded:
pygame.draw.circle(screen, self.color, (self.x, self.y), self.radius) # 画圆
else:
for i in range(50):
# 在烟花爆炸的位置随机生成50个小圆点
x = self.x + random.randint(-self.radius, self.radius)
y = self.y + random.randint(-self.radius, self.radius)
pygame.draw.circle(screen, self.color, (x, y), 2) # 画小圆点
# 创建烟花列表
fireworks = []
# 游戏循环
running = True
while running:
# 处理事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if event.type == pygame.KEYDOWN:
# 按下 1 时生成一个新的烟花
if event.key == pygame.K_1:
fireworks.append(Firework())
# 按下 2 时生成 10 个烟花
if event.key == pygame.K_2:
for i in range(10):
fireworks.append(Firework())
# 更新和绘制烟花
screen.fill((0, 0, 0)) # 填充黑色背景
for firework in fireworks:
firework.update()
firework.draw()
# 刷新屏幕
pygame.display.flip()
# 退出pygame
pygame.quit()
```
阅读全文