Python满屏烟花代码编写
时间: 2023-12-14 11:33:09 浏览: 36
以下是一个Python满屏烟花代码的实现,你可以在终端中运行它来看到效果:
```python
import random
import turtle
# 设置画布大小和背景颜色
turtle.setup(800, 600)
turtle.bgcolor('black')
# 定义烟花粒子类
class Particle(turtle.Turtle):
def __init__(self, x, y, color):
turtle.Turtle.__init__(self)
self.penup()
self.speed(0)
self.color(color)
self.goto(x, y)
self.shape('circle')
self.shapesize(stretch_wid=0.1, stretch_len=0.1)
self.dx = random.uniform(-2, 2)
self.dy = random.uniform(3, 7)
self.gravity = -0.1
def move(self):
self.dy += self.gravity
self.setx(self.xcor() + self.dx)
self.sety(self.ycor() + self.dy)
# 如果烟花粒子超出画布范围,则删除它
if self.ycor() < -300:
self.clear()
self.hideturtle()
# 定义烟花类
class Firework():
def __init__(self):
self.particles = []
self.color = random.choice(['red', 'orange', 'yellow', 'green', 'blue', 'purple'])
# 创建烟花粒子
for _ in range(50):
particle = Particle(0, 0, self.color)
self.particles.append(particle)
# 记录烟花的起始位置
self.x = random.uniform(-300, 300)
self.y = random.uniform(-200, 200)
def explode(self):
# 烟花爆炸时,让所有粒子向四周扩散
for particle in self.particles:
particle.setx(self.x)
particle.sety(self.y)
particle.dx *= random.uniform(1.5, 2.5)
particle.dy *= random.uniform(1.5, 2.5)
def move(self):
# 烟花上升时,让所有粒子跟随烟花一起上升
for particle in self.particles:
particle.move()
self.y += 10
if self.y > 250:
self.explode()
# 创建多个烟花
fireworks = []
for _ in range(10):
firework = Firework()
fireworks.append(firework)
# 让所有烟花不断运动
while True:
for firework in fireworks:
firework.move()
# 如果所有烟花都已经消失,则退出程序
if all(len(firework.particles) == 0 for firework in fireworks):
break
turtle.done()
```