当前位置: 首页 > news >正文

Python生日祝福烟花

1. 实现效果

在这里插入图片描述

2. 素材加载

2个图片和3个音频
shoot(已去底).jpg

flower.jpg

shoot_image = pygame.image.load('shoot(已去底).jpg') # 加载拼接的发射图像
flower_image = pygame.image.load('flower.jpg')      # 加载拼接的烟花图 烟花不好去底
# 调整图像的像素为原图的1/2 因为图像相对于界面来说有些大
shoot_image = pygame.transform.scale(shoot_image, (shoot_image.get_size()[0]/2 ,shoot_image.get_size()[1]/2))
flower_image = pygame.transform.scale(flower_image, (flower_image.get_size()[0]/2 ,flower_image.get_size()[1]/2))
# 音频、音效
shoot_sound = pygame.mixer.Sound('shoot.mp3')
bomb_sound = pygame.mixer.Sound('bomb1.mp3')
bg_music = pygame.mixer.Sound('bg.mp3')

图像分块显示

# 每个部分的宽度
num_parts = 10  # 有10个shoot图
num_parts1 = 13 # 13个烟花
shoot_part_width = shoot_width // num_parts
flower_part_width = flower_width // num_parts1

在这里插入图片描述

3. 烟花发射

发射shoot图从底部往上,快到顶部变烟花flower,然后下落一段距离,最后消失。

在这里插入图片描述

4. 画面定格

处理鼠标点击事件以暂停和恢复动画
在这里插入图片描述

5. 完整代码

# 2024-12-01 Python简单的生日祝福烟花
import pygame # pip install pygame
import random
pygame.init()               # 初始化 pygame
WIDTH, HEIGHT = 750, 500    # 设置窗口尺寸
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("生日烟花祝福") # 窗口标题
#bg_image = pygame.image.load('bg.jpg')
shoot_image = pygame.image.load('shoot(已去底).jpg') # 加载拼接的发射图像
flower_image = pygame.image.load('flower.jpg')      # 加载拼接的烟花图 烟花不好去底
# 调整图像的像素为原图的1/2 因为图像相对于界面来说有些大
shoot_image = pygame.transform.scale(shoot_image, (shoot_image.get_size()[0]/2 ,shoot_image.get_size()[1]/2))
flower_image = pygame.transform.scale(flower_image, (flower_image.get_size()[0]/2 ,flower_image.get_size()[1]/2))
# 音频、音效
shoot_sound = pygame.mixer.Sound('shoot.mp3')
bomb_sound = pygame.mixer.Sound('bomb1.mp3')
bg_music = pygame.mixer.Sound('bg.mp3')
bg_music.play(-1) # 播放背景音乐
# 获取图像的宽度和高度
shoot_width, shoot_height = shoot_image.get_size()
flower_width, flower_height = flower_image.get_size()
# 每个部分的宽度
num_parts = 10  # 有10个shoot图
num_parts1 = 13 # 13个烟花
shoot_part_width = shoot_width // num_parts
flower_part_width = flower_width // num_parts1
class Firework: # 定义烟花类def __init__(self, x):self.x = x              # 使用提供的x坐标self.shoot_y = HEIGHT   # shoot初始y坐标在底部self.flower_y = 0       # flower初始位置上方self.shoot_active = Trueself.flower_active = Falseself.shoot_part_index = random.randint(0, num_parts - 1)    # 随机选择shoot的部分索引self.flower_part_index = random.randint(0, num_parts - 1)   # 随机选择flower的部分索引self.drop_height = 10                                       # 下落的高度(在达到顶部后下落一点)self.is_dropping = False                                    # 是否开始下落self.alpha = 255                                            # 透明度控制def shoot(self):if self.shoot_active:# 绘制随机选择的 shoot 图像部分screen.blit(shoot_image, (self.x, self.shoot_y),(self.shoot_part_index * shoot_part_width, 0, shoot_part_width, shoot_height))self.shoot_y -= 5  # 更新 shoot 的位置 向上移动if self.shoot_y >= shoot_height:shoot_sound.play() # 播放发射音效if self.shoot_y <= 20:  # 当 shoot 达到接近窗口顶部时,触发下落self.shoot_active = Falseself.flower_active = Trueself.flower_y = self.shoot_y + self.drop_height  # flower 下落一点self.is_dropping = True  # 标记为开始下落if self.flower_active:   # 绘制随机选择的 flower 图像部分bomb_sound.play()flower_surface = pygame.Surface((flower_part_width, flower_height), pygame.SRCALPHA)  # 创建带透明度的 surfaceflower_surface.blit(flower_image, (0, 0),(self.flower_part_index * flower_part_width, 0, flower_part_width, flower_height))flower_surface.set_alpha(self.alpha) # 设置透明度screen.blit(flower_surface, (self.x, self.flower_y))if self.is_dropping:self.flower_y += 1  # flower 向下移动if self.alpha > 0:self.alpha -= 5  # 逐步降低透明度else:self.flower_active = False  # 透明度为0时消失
clock = pygame.time.Clock()
fireworks = []
running = True
paused = False  # 初始化暂停状态为 False
font = pygame.font.Font(None, 74)   # 设置字体, 使用默认字体, 大小为74
text_color = (255, 192, 203)        # 文字颜色粉红色
birthday_text = font.render("Happy Birthday", True, text_color)        # 文本"生日快乐"
text_rect = birthday_text.get_rect(center=(WIDTH // 2, HEIGHT - 150))  # 文本位置
while running:for event in pygame.event.get():if event.type == pygame.QUIT:running = False# 处理鼠标点击事件以暂停和恢复动画if event.type == pygame.MOUSEBUTTONDOWN:paused = not paused  # 切换暂停状态if not paused:# 每隔一段时间生成新烟花if random.random() < 0.01:  # 随机生成烟花 and len(fireworks) < 10# 随机选择 X 坐标,避免与已有烟花重叠new_firework_x = random.randint(0, WIDTH - shoot_part_width)overlap = any(abs(new_firework_x - firework.x) < shoot_part_width for firework in fireworks)if not overlap:     # 如果没有重叠,添加新烟花fireworks.append(Firework(new_firework_x))screen.fill((0, 0, 0))  # 填充黑色背景 #screen.blit(bg_image, (0, 0))for firework in fireworks:firework.shoot()screen.blit(birthday_text, text_rect) # 绘制生日文本pygame.display.flip()clock.tick(60) # 控制更新画面的速度
pygame.quit()

相关文章:

Python生日祝福烟花

1. 实现效果 2. 素材加载 2个图片和3个音频 shoot_image pygame.image.load(shoot(已去底).jpg) # 加载拼接的发射图像 flower_image pygame.image.load(flower.jpg) # 加载拼接的烟花图 烟花不好去底 # 调整图像的像素为原图的1/2 因为图像相对于界面来说有些大 shoo…...

Ubuntu环境 nginx.conf详解(二)

1、nginx.conf 结构详解&#xff1a; http 块&#xff1a;用于配置 HTTP 服务器的相关设置&#xff0c;包括处理 HTTP 和 HTTPS。 stream 块&#xff1a;用于配置 TCP/UDP 代理服务器&#xff0c;适用于需要进行四层负载均衡的情况。 ... # 全局块 events {...} …...

shardingsphere分库分表项目实践4-sql解析sql改写

为什么要sql解析重写&#xff1f; 如果我们的系统数据库实现了分表&#xff0c;那么我们的sql中表名需要根据参数动态确定&#xff0c;那么代码怎么写&#xff1f; 方案1&#xff1a; 自己手动拼接&#xff0c; 比如 update t_user_${suffix} , ${suffix} 作为一个变量传递…...

mysql数据库中,一棵3层的B+树,假如数据节点大小是1k,那这棵B+可以存多少条记录(2100万的由来)

在MySQL中&#xff0c;3层的B树可以存储的数据量取决于多个因素&#xff0c;包括页大小、每行数据的大小以及索引项的大小。以下是一个详细的计算过程&#xff1a; 一、假设条件 页大小&#xff1a;在InnoDB存储引擎中&#xff0c;B树的每个节点&#xff08;页&#xff09;大…...

Git 操作全解:从基础命令到高级操作的实用指南

文章目录 1.基本命令1.初始化仓库2.克隆远程仓库3.查看当前仓库状态4.查看提交日志5.添加文件到暂存区6.提交更改7.查看仓库的配置信息 2.分支操作1.查看所有分支2.创建新分支3.切换名称4.创建并切换到新分支5.删除分支6.查看当前分支 3.合并分支1.合并分支2.解决合并冲突 4.远…...

华院计算参与项目再次被《新闻联播》报道

12月17日&#xff0c;央视《新闻联播》播出我国推进乡村振兴取得积极进展。其中&#xff0c;华院计算参与的江西省防止返贫监测帮扶大数据系统被报道&#xff0c;该系统实现了由原来的“人找人”向“数据找人”的转变&#xff0c;有效提升监测帮扶及时性和有效性&#xff0c;守…...

从一次线上故障聊聊接口自动化测试

1、背景 3月初&#xff0c;运营同事配置了个还未上线的页面到网站首页 banner&#xff0c;导致用户点了报错。尽管这次很明确是运营人为操作失误引起的故障&#xff0c;但过往此类核心页面的访问异常&#xff0c;我们已不是第一次遇见。 从平台整体利益触发&#xff0c;我们各…...

Element-ui的使用教程 基于HBuilder X

文章目录 1.Element-ui简介2.使用HBuilderX 创建一个基于Vue3的项目 &#xff08;由于是使用的基于Vue3的Element-ui&#xff09;3.安装element-ui4.在项目里完全引用element-ui5.引用组件6.运行项目 1.Element-ui简介 Element&#xff0c;一套为开发者、设计师和产品经理准备…...

Chapter 03 复合数据类型-1

1.列表 Python内置的一种有序、可变的序列数据类型&#xff1b; 列表的定义&#xff1a; [ ]括起来的逗号分隔的多个元素组成的序列 列表对象的创建&#xff1a; &#xff08;1&#xff09;直接赋值 >>> list1 []#创建一个空列表赋值给list1 >>> list…...

【Python知识】Python面向对象编程知识

Python面向对象编程知识 概述1. 类&#xff08;Class&#xff09;2. 对象&#xff08;Object&#xff09;3. 封装&#xff08;Encapsulation&#xff09;4. 继承&#xff08;Inheritance&#xff09;5. 多态&#xff08;Polymorphism&#xff09;6. 抽象&#xff08;Abstractio…...

CSharp: Oracle Stored Procedure query table

存储过程查询postgreSQL,Oracle 和sql server,Mysql 有区别。程序调用也是有区别。 oracle sql script: CREATE OR REPLACE PROCEDURE procSelectSchool(paramSchoolId IN char,p_cursor OUT SYS_REFCURSOR ) AS BEGINOPEN p_cursor FORSELECT *FROM SchoolWHERE SchoolId p…...

“协同过滤技术实战”:网上书城系统的设计与实现

2.1 JSP技术介绍 Java Server Pages这三个英文词汇的首字母的组合就是JSP。所以JSP是一个简写的名字&#xff0c;代表动态网页开发技术。JSP与Java的关系可以使用公式表示&#xff0c;即&#xff1a;JSP HTMLJava&#xff0c;HTML就是编写静态内容的标记语言。JSP则是可以编写网…...

Dhatim FastExcel 读写 Excel 文件

Dhatim FastExcel 读写 Excel 文件 一、说明1、主要特点2、应用场景 二、使用方法1、引入依赖2、Sheet 数据3、读取 Excel4、写入 Excel 一、说明 Github 地址&#xff1a;Dhatim FastExcel Dhatim FastExcel是一个高性能、轻量级的Java库&#xff0c;专门用于读取和写入Exce…...

YOLO11全解析:从原理到实战,全流程体验下一代目标检测

前言 一、模型介绍 二、网络结构 1.主干网络&#xff08;Backbone&#xff09; 2.颈部网络&#xff08;Neck&#xff09; 3.头部网络&#xff08;Head&#xff09; 三、算法改进 1.增强的特征提取 2.优化的效率和速度 3.更高的准确性与更少的参数 4.环境适应性强 5.…...

深度学习领域的主要神经网络架构综述

阅读本文前请先按照顺序阅读&#xff1a; Coursera吴恩达《神经网络与深度学习》课程笔记&#xff08;1&#xff09;-- 深度学习概述_吴恩达深度学习课程-CSDN博客 https://blog.csdn.net/red_stone1/article/details/77799014 完结篇 | 吴恩达deeplearning.ai专项课程精炼笔…...

【Nginx系列】---Nginx配置tcp转发

参考 Nginx 配置文件&#xff1a; error_log /var/log/nginx/error.log notice; pid /var/run/nginx.pid;events {worker_connections 1024; }stream {# 第一个服务转发upstream mysqltest {server 172.16.187.142:9000;}server {listen 9000;proxy_pass mysqltest;}…...

Java抽象工厂+单例模式

在前端时间开发过程中,有这样一个业务场景:A;B两家厂商设备进行设备信息的同步功能。 根据实际场景,做了抽象工厂+单例模式实现调用工厂时,生成不同的具体业务引用对象,实现方法的调用。 概念: 抽象工厂模式通过接口或抽象类来创建一系列相关或依赖对象。它定义了一组工…...

后端接口设计

一、基本规范 1.URL设计 应遵循RESTful风格&#xff0c;使用动词名词的方式描述接口的功能。应简洁明了&#xff0c;易于理解和记忆。 2.请求协议及方法 使用HTTPS协议进行数据传输&#xff0c;保证数据在传输过程中的安全性。如无特殊情况&#xff0c;统一使用post方法。 …...

Docker部署Sentinel

一、简介 是什么&#xff1a;面向分布式、多语言异构化服务架构的流量治理组件 能干嘛&#xff1a;从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性 官网地址&#xff1a;https://sentinelguard.io/zh-c…...

真实环境下实车运行,新能源汽车锂离子电池数据集

引言 锂离子电池(Lithium-ion Batteries,LiBs&#xff09;已经作为电动汽车核心动力源&#xff0c;其性能直接关系到系统的性能和使用安全。为确保锂电池的安全使用&#xff0c;需要对锂电池的状态进行精确的估计&#xff0c;包括荷电状态(State of Charge, soC)、健康状态(St…...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;百货中心供应链管理系统被用户普遍使用&#xff0c;为方…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接&#xff0c;私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址&#xff1a;pdf 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列&#xff0c;以便知晓哪些列包含有价值的数据&#xff0c;…...

Python 包管理器 uv 介绍

Python 包管理器 uv 全面介绍 uv 是由 Astral&#xff08;热门工具 Ruff 的开发者&#xff09;推出的下一代高性能 Python 包管理器和构建工具&#xff0c;用 Rust 编写。它旨在解决传统工具&#xff08;如 pip、virtualenv、pip-tools&#xff09;的性能瓶颈&#xff0c;同时…...

【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制

目录 节点的功能承载层&#xff08;GATT/Adv&#xff09;局限性&#xff1a; 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能&#xff0c;如 Configuration …...

uniapp 实现腾讯云IM群文件上传下载功能

UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中&#xff0c;群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS&#xff0c;在uniapp中实现&#xff1a; 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...

AxureRP-Pro-Beta-Setup_114413.exe (6.0.0.2887)

Name&#xff1a;3ddown Serial&#xff1a;FiCGEezgdGoYILo8U/2MFyCWj0jZoJc/sziRRj2/ENvtEq7w1RH97k5MWctqVHA 注册用户名&#xff1a;Axure 序列号&#xff1a;8t3Yk/zu4cX601/seX6wBZgYRVj/lkC2PICCdO4sFKCCLx8mcCnccoylVb40lP...

相关类相关的可视化图像总结

目录 一、散点图 二、气泡图 三、相关图 四、热力图 五、二维密度图 六、多模态二维密度图 七、雷达图 八、桑基图 九、总结 一、散点图 特点 通过点的位置展示两个连续变量之间的关系&#xff0c;可直观判断线性相关、非线性相关或无相关关系&#xff0c;点的分布密…...