pygame 烟花效果

这篇具有很好参考价值的文章主要介绍了pygame 烟花效果。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

pygame 烟花效果,Python,pygame,python

# 初始化

pygame.init()
screen_width = 800
screen_height = 600
screen = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption('烟花效果')

# 焰火发射

particles = []  # 焰火粒子
def firework(x, y):
    num_particles = 100  # 每次发射的粒子数量
    for _ in range(num_particles):
        direction = random.uniform(0, 2 * math.pi)  # 随机方向
        speed = random.uniform(2, 6)  # 随机速度
        particles.append({
            'x': x,
            'y': y,
            'vx': math.cos(direction) * speed,
            'vy': math.sin(direction) * speed,
            'color': colorlib.randcolorTuple(),
            'size': random.uniform(1, 4),  # 粒子的初始大小
            'life': random.uniform(100, 200)  # 粒子的生命周期
        })

# 更新屏幕

def update_screen():
    global particles
    screen.fill((0, 0, 0))  # 填充黑色背景
    for particle in particles[:]:
        particle['x'] += particle['vx']
        particle['y'] += particle['vy']
        particle['life'] -= 5
        coordinate = particle['x'], particle['y']
        radius = particle['size'] * particle['life'] / 100.0
        pygame.draw.circle(screen, particle['color'], coordinate, radius)
        if particle['life'] <= 0 or particle['y'] > screen_height:
            particles.remove(particle)

# 主循环

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()

    # 每隔一段时间发射一次烟花
    if random.randint(0, 2)==0:  # 发射随机时间
        firework(random.randint(0, screen_width), random.randint(0, screen_height//3*2))

    update_screen()
    pygame.display.flip()  # 更新整个屏幕
    pygame.time.Clock().tick(60)  # 控制帧率

pygame 烟花效果

完整代码

其中,库colorlib来源于: python 教你如何创建一个自定义库 colorlib.py-CSDN博客

import pygame
import random
import math
import colorlib

# 初始化pygame
pygame.init()

# 设置屏幕大小
screen_width = 800
screen_height = 600
screen = pygame.display.set_mode((screen_width, screen_height))

# 设置标题
pygame.display.set_caption('烟花效果')

# 焰火粒子
particles = []

# 焰火发射
def firework(x, y):
    num_particles = 100  # 每次发射的粒子数量
    for _ in range(num_particles):
        direction = random.uniform(0, 2 * math.pi)  # 随机方向
        speed = random.uniform(2, 6)  # 随机速度
        particles.append({
            'x': x,
            'y': y,
            'vx': math.cos(direction) * speed,
            'vy': math.sin(direction) * speed,
            'color': colorlib.randcolorTuple(),
            'size': random.uniform(1, 4),  # 粒子的初始大小
            'life': random.uniform(100, 200)  # 粒子的生命周期
        })

# 更新屏幕
def update_screen():
    global particles
    screen.fill((0, 0, 0))  # 填充黑色背景
    for particle in particles[:]:
        particle['x'] += particle['vx']
        particle['y'] += particle['vy']
        particle['life'] -= 5
        coordinate = particle['x'], particle['y']
        radius = particle['size'] * particle['life'] / 100.0
        pygame.draw.circle(screen, particle['color'], coordinate, radius)
        if particle['life'] <= 0 or particle['y'] > screen_height:
            particles.remove(particle)

# 主循环
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()

    # 每隔一段时间发射一次烟花
    if random.randint(0, 2)==0:  # 发射随机时间
        firework(random.randint(0, screen_width), random.randint(0, screen_height//3*2))

    update_screen()
    pygame.display.flip()  # 更新整个屏幕
    pygame.time.Clock().tick(60)  # 控制帧率

优化代码

把粒子的字典描述方式改为类:

       {    'x': x,
            'y': y,
            'vx': math.cos(direction) * speed,
            'vy': math.sin(direction) * speed,
            'color': colorlib.randcolorTuple(),
            'size': random.uniform(1, 4),  # 粒子的初始大小
            'life': random.uniform(100, 200)  # 粒子的生命周期
        } 

修改成:

class Firework:
    def __init__(self, x=0, y=0):
        self.x, self.y = self.xy = x, y
        direction = random.uniform(0, 2 * math.pi)  # 随机方向
        speed = random.uniform(2, 6)  # 随机速度
        self.vx = math.cos(direction) * speed
        self.vy = math.sin(direction) * speed
        self.color = tuple(random.randint(30, 255) for _ in range(3))
        self.size = random.uniform(2, 4)  # 粒子的初始大小
        self.life = random.uniform(100, 200)  # 粒子的生命周期

随机颜色也修改一下,最后优化好的完整代码如下:

import pygame, random, math

# 初始化pygame
pygame.init()

# 设置屏幕大小
screen_width = 800
screen_height = 600
screen = pygame.display.set_mode((screen_width, screen_height))

# 设置标题
pygame.display.set_caption('烟花效果')

class Firework:
    def __init__(self, x=0, y=0):
        self.x, self.y = self.xy = x, y
        direction = random.uniform(0, 2 * math.pi)  # 随机方向
        speed = random.uniform(2, 6)  # 随机速度
        self.vx = math.cos(direction) * speed
        self.vy = math.sin(direction) * speed
        self.color = tuple(random.randint(30, 255) for _ in range(3))
        self.size = random.uniform(2, 4)  # 粒子的初始大小
        self.life = random.uniform(100, 200)  # 粒子的生命周期
    def update(self):
        self.x += self.vx
        self.y += self.vy
        self.life -= 5

# 焰火粒子列表
particles = []

# 更新屏幕
def update_screen():
    global particles
    screen.fill((0, 0, 0))  # 填充黑色背景
    # 遍历并更新粒子
    for particle in particles[:]:
        particle.update()
        radius = particle.size * particle.life // 100  # 计算半径
        pygame.draw.circle(screen, particle.color, (particle.x, particle.y), radius)
        # 如粒子生命周期结束或飞出屏幕,就删除
        if not (particle.life>0 and 0<particle.x<screen_width and 0<particle.y<screen_height):
            particles.remove(particle)
    pygame.display.flip()  # 更新整个屏幕

# 主循环
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
    # 每隔一段时间发射一次烟花
    if random.randint(0, 3) == 0:  # 发射随机时间
        xy = random.randint(0, screen_width), random.randint(0, screen_height*2//3)
        particles.extend(Firework(*xy) for _ in range(100))
    update_screen()
    pygame.display.flip()  # 更新整个屏幕
    pygame.time.Clock().tick(60)  # 控制帧率

pygame.quit()

文章来源地址https://www.toymoban.com/news/detail-855896.html

到了这里,关于pygame 烟花效果的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python基于pygame库实现弹幕效果(多行显示,速度不同,颜色不同,循环显示)

            使用python实现类似弹幕的显示效果,弹幕文本存储在txt文件中,弹幕多行显示,弹幕颜色不同有区别,弹幕的速度不一,弹幕要循环显示。      弹幕文本数据:danmu.txt

    2024年02月08日
    浏览(67)
  • pygame里实现导弹追踪效果,同时对python的指针机制有一点点思考

           最近,儿子一直缠着让我把之前给他编写的游戏重做一下,要加一些功能.但是因为之前写代码的时候刚学会python,当时的想法就是能跑就行,现在回头看来,代码的可维护性几乎为零.所以没办法只能冲头再来,重构了几乎所有代码.在编写的时候遇到了一个有意思的问题,儿子

    2024年01月21日
    浏览(366)
  • Python烟花代码,用Python制作一个烟花特效

    Python实现浪漫的烟花特效 现在很多地方都不能放烟花了,既然看不到, 那作为程序猿的我们还不能自己用代码做一个吗? 今天就带大家用代码做一个烟花特效吧。 pygame介绍 关于Pygame的基本信息,pygame是什么,谁会被Pygame吸引,并且在哪里找到它。 Pygame是被设计用来写游戏

    2024年02月08日
    浏览(46)
  • python烟花代码简单可复制,python烟花代码怎么运行

    大家好,小编来为大家解答以下问题,Python烟花代码总体功能介绍,python烟花代码简单可复制,今天让我们一起来看看吧! 天是2023 的第9天,到了这个时间点,部分小伙伴已经开始复盘这一年的得与失。比如今年增加了多少技能点,看了多少本书,写了多少篇文章或者年前

    2024年01月22日
    浏览(53)
  • python烟花代码简单可复制,python烟花代码怎么写

    大家好,本文将围绕Python烟花代码总体功能介绍展开说明,python烟花代码简单可复制是一个很多人都想弄明白的事情,想搞清楚python烟花代码怎么写需要先了解以下几个事情。 Source code download: 本文相关源码 疫情太严重了,有很多小伙伴都不能出门玩耍了。给大家看一个特别

    2024年02月20日
    浏览(50)
  • python烟花代码简单可复制,python烟花代码加名字

    本篇文章给大家谈谈Python烟花代码总体功能介绍,以及python烟花代码简单可复制,希望对各位有所帮助,不要忘了收藏本站喔。 还有两天就到元旦了!!!很多小伙伴已经和朋友约好一起跨年了 但是现在很多地方都禁止烟花燃放,跨年没有烟花总感觉缺少一点味道~为了实现

    2024年03月15日
    浏览(46)
  • 【python】python新年烟花代码【附源码】

             欢迎来到英杰社区 https://bbs.csdn.net/topics/617804998          新年的钟声即将敲响,为了庆祝这个喜庆的时刻,我们可以用 Python 编写一个炫彩夺目的烟花盛典。本文将详细介绍如何使用 Pygame 库创建一个令人惊叹的烟花效果。            (1)、导入必要的模块

    2024年02月02日
    浏览(43)
  • python烟花代码通过编写程序来模拟烟花的绽放过程

    下面是一个简单的 Python 烟花代码,可以通过编写程序来模拟烟花的绽放过程: 该代码使用 turtle 库来绘制烟花的效果。首先,设置窗口大小和标题,定义烟花的颜色和数量。然后,定义烟花的形状,采用 turtle.Shape 的方式来定义,包括圆形和尾迹。接着,注册烟花的形状,采

    2024年02月05日
    浏览(43)
  • Python新年烟花代码

    Pygame 绘制烟花的基本原理 1,发射阶段:在这一阶段烟花的形状是线性向上,通过设定一组大小不同、颜色不同的点来模拟“向上发射” 的运动运动,运动过程中 5个点被赋予不同大小的加速度,随着时间推移,后面的点会赶上前面的点,最终所有点会汇聚在一起,处于 绽放

    2024年02月03日
    浏览(52)
  • python烟花代码

    下面是一个用Python编写的简单烟花特效代码,使用了Pygame库来实现图形显示。请确保你已经安装了Pygame库,如果没有安装,可以使用 pip install pygame 来安装。 这个代码创建了一个窗口,当你点击鼠标时,会在鼠标位置生成烟花粒子效果。这只是一个简单的示例,你可以根据需

    2024年02月06日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包