能写一个python的烟花代码吗
时间: 2024-03-02 22:23:46 浏览: 58
python烟花代码,使用python语言制作的放烟花的项目,代码清楚,运行简单,可做毕业设计,下载即可运行
当然可以,以下是一个简单的烟花模拟代码:
```python
import turtle
import random
# 设置画布大小和背景颜色
turtle.setup(600, 600)
turtle.bgcolor("black")
# 创建烟花粒子类
class Particle(turtle.Turtle):
def __init__(self, x, y, color):
# 继承 Turtle 类
turtle.Turtle.__init__(self)
self.penup()
self.speed("fastest")
self.goto(x, y)
self.color(color)
self.shape("circle")
self.shapesize(0.5)
self.dx = random.uniform(-2, 2) # x 方向速度
self.dy = random.uniform(4, 10) # y 方向速度
self.da = random.uniform(-0.2, 0.2) # 角速度
self.life = 30 # 粒子寿命
def move(self):
self.life -= 1
self.dy -= 0.2 # y 方向加速度
self.setx(self.xcor() + self.dx)
self.sety(self.ycor() - self.dy)
self.setheading(self.heading() + self.da)
def is_alive(self):
return self.life > 0
# 创建烟花类
class Firework():
def __init__(self, x, y):
self.particles = []
self.color = random.choice(["red", "orange", "yellow", "green", "blue", "purple"])
self.life = 50 # 烟花寿命
for _ in range(50): # 生成 50 个粒子
self.particles.append(Particle(x, y, self.color))
def move(self):
self.life -= 1
for p in self.particles:
p.move()
def explode(self):
for p in self.particles:
p.da = 0 # 粒子停止旋转
p.dx *= random.uniform(1.5, 2.5) # x 方向速度放大
p.dy *= random.uniform(1.5, 2.5) # y 方向速度放大
p.life = random.randint(10, 30) # 粒子寿命随机
p.color = "white"
def is_alive(self):
return self.life > 0
# 烟花列表
fireworks = []
# 主循环
while True:
# 一定概率生成新的烟花
if random.random() < 0.1:
fireworks.append(Firework(random.uniform(-250, 250), random.uniform(-250, 250)))
# 移动和绘制烟花
for fw in fireworks:
fw.move()
if fw.life == 0: # 烟花燃尽时触发爆炸
fw.explode()
for p in fw.particles:
if p.is_alive():
p.stamp()
fireworks = [fw for fw in fireworks if fw.is_alive()] # 删除已经烧完的烟花
turtle.update() # 更新画布
turtle.clearstamps() # 清除之前画的烟花粒子
```
运行代码,即可看到烟花效果。你可以根据自己的需求修改参数和细节,来打造更加绚丽的烟花效果。
阅读全文