祝大家金蛇衔财,蛇来运转
首先,确保你已经安装了 pygame
库。如果还没有安装,可以通过以下命令安装:
pip install pygame
接下来是烟花效果的 Python 代码:
import pygame
import random
import math
import sys
# 初始化pygame
pygame.init()
# 设置窗口尺寸和颜色
WIDTH, HEIGHT = 800, 600
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("新年烟花")
# 颜色定义
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
COLORS = [(255, 0, 0), (0, 255, 0), (0, 0, 255), (255, 255, 0), (255, 0, 255), (0, 255, 255)]
# 烟花类
class Firework:
def __init__(self, x, y):
self.x = x
self.y = y
self.size = random.randint(5, 8)
self.color = random.choice(COLORS)
self.particles = []
self.exploded = False
def update(self):
if not self.exploded:
self.y -= 5 # 向上飞
if self.y < HEIGHT // 2: # 达到爆炸高度
self.explode()
else:
for particle in self.particles:
particle.update()
def draw(self):
if not self.exploded:
pygame.draw.circle(screen, self.color, (self.x, self.y), self.size)
else:
for particle in self.particles:
particle.draw()
def explode(self):
self.exploded = True
num_particles = random.randint(50, 100)
for _ in range(num_particles):
angle = random.uniform(0, 2 * math.pi)
speed = random.uniform(2, 6)
dx = math.cos(angle) * speed
dy = math.sin(angle) * speed
color = random.choice(COLORS)
particle = Particle(self.x, self.y, dx, dy, color)
self.particles.append(particle)
# 粒子类
class Particle:
def __init__(self, x, y, dx, dy, color):
self.x = x
self.y = y
self.dx = dx
self.dy = dy
self.color = color
self.size = random.randint(2, 4)
self.lifetime = random.randint(50, 100)
def update(self):
self.x += self.dx
self.y += self.dy
self.lifetime -= 1
if self.lifetime <= 0:
self.size -= 1
if self.size <= 0:
self.size = 0
def draw(self):
pygame.draw.circle(screen, self.color, (int(self.x), int(self.y)), self.size)
# 游戏主循环
def main():
clock = pygame.time.Clock()
fireworks = []
running = True
while running:
screen.fill(BLACK)
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# 随机生成烟花
if random.random() < 0.03: # 3% 概率生成新烟花
firework = Firework(random.randint(100, WIDTH - 100), HEIGHT)
fireworks.append(firework)
# 更新和绘制所有烟花
for firework in fireworks[:]:
firework.update()
firework.draw()
if firework.exploded and not firework.particles: # 爆炸并且所有粒子消失后移除烟花
fireworks.remove(firework)
pygame.display.flip()
clock.tick(60) # 每秒60帧
pygame.quit()
sys.exit()
if __name__ == "__main__":
main()
烟花类 (Firework
):
explode()
方法,生成多个粒子。粒子类 (Particle
):
主循环 (main()
):
pygame.event.get()
处理退出事件。