【Python】春节炫酷烟花秀

【本文首发于公众号:阿黎逸阳的代码】

​一年一度的春节来啦,正值阖家团圆、万家灯火辉煌之际,阿黎逸阳带着烟花秀祝大家新年快乐!牛年大吉!

Happy New Year

  

一、绘制成品

1.迪士尼烟花秀

  

2.两个人的新年

  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
Python编写炫酷烟花可以使用Pygame库。Pygame是一个专门为游戏开发设计的Python库,可以很方便地创建动画效果。 具体实现步骤如下: 1. 导入Pygame库和其他必要的库。 2. 创建窗口和背景。 3. 定义烟花粒子类(包括位置、速度、加速度等属性)。 4. 定义烟花爆炸效果函数,该函数接收一个烟花粒子实例作为参数,生成多个新的烟花粒子,并将其加入到粒子列表中。 5. 在主循环中,检测键盘事件,如果按下了ESC键则退出程序。然后,生成随机位置的烟花粒子,并将其加入到粒子列表中。对于每个粒子,更新其位置和速度,并绘制到屏幕上。如果该粒子已经达到其最大生命周期,则进行爆炸效果。 6. 更新屏幕。 以下是简单的示例代码: ```python import pygame import random import math # 初始化Pygame pygame.init() # 定义常量 SCREEN_WIDTH = 800 SCREEN_HEIGHT = 600 FPS = 60 GRAVITY = 0.5 PARTICLE_LIFETIME = 100 PARTICLE_RADIUS = 2 PARTICLE_COUNT = 100 # 创建窗口和背景 screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT)) background = pygame.Surface((SCREEN_WIDTH, SCREEN_HEIGHT)) background.fill((0, 0, 0)) clock = pygame.time.Clock() # 烟花粒子类 class Particle: def __init__(self, x, y, color): self.x = x self.y = y self.color = color self.radius = PARTICLE_RADIUS self.vx = random.uniform(-3, 3) self.vy = random.uniform(-10, -5) self.gravity = GRAVITY self.age = 0 def update(self): self.x += self.vx self.y += self.vy + self.gravity * self.age self.age += 1 def draw(self, surface): pygame.draw.circle(surface, self.color, (int(self.x), int(self.y)), self.radius) def is_dead(self): return self.age > PARTICLE_LIFETIME # 烟花爆炸效果函数 def explode(particle): for i in range(PARTICLE_COUNT): color = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)) angle = math.radians(random.uniform(0, 360)) speed = random.uniform(5, 15) vx = math.cos(angle) * speed vy = math.sin(angle) * speed p = Particle(particle.x, particle.y, color) p.vx = vx p.vy = vy particles.append(p) # 粒子列表 particles = [] # 主循环 running = True while running: # 处理事件 for event in pygame.event.get(): if event.type == pygame.QUIT: running = False elif event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE: running = False # 生成新的烟花粒子 if len(particles) < PARTICLE_COUNT: x = random.randint(100, SCREEN_WIDTH - 100) y = random.randint(100, SCREEN_HEIGHT - 100) color = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)) particles.append(Particle(x, y, color)) # 更新和绘制粒子 for particle in particles: particle.update() particle.draw(background) # 如果粒子已经达到生命周期,则进行爆炸效果 if particle.is_dead(): explode(particle) particles.remove(particle) # 更新屏幕 screen.blit(background, (0, 0)) pygame.display.update() # 控制帧率 clock.tick(FPS) # 退出Pygame pygame.quit() ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿黎逸阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值