python实现字幕雨效果实现

news2024/12/30 2:51:31

先看最终实现的效果图:

使用python实现以上字幕雨效果,用到的主要库是pygame;

pygame不是内置模块,需要先安装一下:

安装pygame

安装方式推荐有很多种,推荐使用pip;

pip 是 Python 的包安装程序。其实,pip 就是 Python 标准库(The Python Standard Library)中的一个包,只是这个包比较特殊,用它可以来管理 Python 标准库(The Python Standard Library)中其他的包。pip 是一个命令行程序。 安装 pip 后,会向系统添加一个 pip 命令,该命令可以从命令提示符运行。

安装pip:

  • 安装python; 这个是必须安装的;

  • 下载pip:

    官网地址:pypi.org/project/pip…; 下载完毕后,解压

  • 打开命令行窗口,进入到pip解压后的目录;执行代码

    python3 setup.py install
    进行安装, 安装完成后,将pip加入到系统环境变量中

  • 验证 打开命令行窗口,输入pip list 或者pip3 list

以上只针对于windows系统,其他系统也可以参考;

  • 安装所需库: 打开命令行窗口,输入执行以下代码,并回车

    pip install pygame

    等待提示第三库安装成功既可;

开发思路:

  • 实例化窗口并设置窗口大小

pygame.init() resolution = width,height = 800,600 #设置窗口大小和标题 windowSurface = pygame.display.set_mode(resolution)

  • 定义字符列表,设置单个字的大小
str1 = "月光下的玉兰树,亭亭玉立,幽静而神秘,微风拂过,树影婆娑,树叶低喁,让人心静如水。月光下的玉兰花,透出淡淡的光晕,暗香泘动,令人心醉神迷。你可以揣个5G手机,避开嘈杂的人群,独自坐在玉兰树下的小石凳上,静静地聆听着花开的声音,在玉兰花的幽香里,挥洒小资情调,放纵思绪横飞。。"
    letter = list(str1)
    font_height = 15
    font = pygame.font.Font("c:\windows\Fonts\simhei.ttf", font_height)
    texts = [
            font.render(str(letter[i]), True, (0, 255, 0)) for i in range(len(letter))
    ]
复制代码
  • 根据字符大小和窗口大小,计算出列数

column = int(width / font_height) drops = [0 for i in range(column)]

  • 循环每列,画出字符到屏幕
 for i in range(len(drops)):
            text = random.choice(texts)
            windowSurface.blit(text, (i * font_height, drops[i] * font_height))
            drops[i] += 1
            # 超过界面高度或随机数,下雨位置置0
            if drops[i] * font_height > height or random.random() > 0.95:
                drops[i] = 0
复制代码
  • 实时更新屏幕

pygame.display.flip()

完整代码实现:

import pygame, sys,random

pygame.init()
width,height = 800,600 #设置窗口大小和标题
windowSurface = pygame.display.set_mode(resolution) #设置分辨率
pygame.display.set_caption("字符雨")#设置标题

if __name__ == '__main__':
    str1 = "月光下的玉兰树,亭亭玉立,幽静而神秘,微风拂过,树影婆娑,树叶低喁,让人心静如水。月光下的玉兰花,透出淡淡的光晕,暗香泘动,令人心醉神迷。你可以揣个5G手机,避开嘈杂的人群,独自坐在玉兰树下的小石凳上,静静地聆听着花开的声音,在玉兰花的幽香里,挥洒小资情调,放纵思绪横飞。。"
    letter = list(str1)
    font_height = 15
    font = pygame.font.Font("c:\windows\Fonts\simhei.ttf", font_height)
    texts = [
            font.render(str(letter[i]), True, (0, 255, 0)) for i in range(len(letter))
    ]

    column = int(width / font_height)
    drops = [0 for i in range(column)]
    bg_suface = pygame.Surface((width, height), flags=pygame.SRCALPHA)
    pygame.Surface.convert(bg_suface)
    bg_suface.fill(pygame.Color(0, 0, 0, 28))
    
    while True:
        pygame.time.delay(60)
        windowSurface.blit(bg_suface, (0, 0))
        for i in range(len(drops)):
            text = random.choice(texts)
            windowSurface.blit(text, (i * font_height, drops[i] * font_height))
            drops[i] += 1
            if drops[i] * font_height > height or random.random() > 0.95:
                drops[i] = 0
  

        pygame.display.flip()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/122241.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RabbitMQ 订阅模型-路由模式

订阅模型-路由模式,此时生产者发送消息时需要指定 RoutingKey,即路由 Key,Exchange 接收到消息时转发到与 RoutingKey 相匹配的队列中。 在 Direct 模型下: 队列与交换机绑定,不能任意绑定,而要指定一个 Ro…

线上贷款申请违约风险预测大数据模型

通过模型可以得出模型分类准确率,通过客户信用违约风险预测模型,可以实现多渠道预警,形成多角度观察、多方面分析、多渠道传递的工作局面。

Python每日一练 10——for循环

Python每日一练 10——for循环 文章目录Python每日一练 10——for循环一、for循环介绍二、实例一:等差数列前n项和三、实例二:计算阶乘四、实例三:拉马努金法计算圆周率五、实例四:百钱买百鸡一、for循环介绍 for循环一般用于循环…

前端_Vue_9.模板引用、组件基础

文章目录一、模板引用1.1. 访问模板引用1.2. v-for 中的模板引用1.3. 函数模板引用1.4. 组件上的 ref1.5. 小结二、组件基础 ⭐2.1. 定义一个组件2.2. 使用组件2.3. 传递props2.4. 监听事件2.5. 通过插槽(slot)来分配内容2.6. 动态组件2.7. DOM模板解析注…

go 库 Cobra 现代化的命令行框架

go 库 Cobra 现代化的命令行框架 文章目录go 库 Cobra 现代化的命令行框架1. 简介2. 主要功能3. 应用举例4. Cobra 安装5. 使用 Cobra 库创建命令5.1 创建 rootCmd5.2 创建 main.go5.3 添加命令5.4 编译并运行6. 特性6.1 使用标志6.2 非选项参数验证6.3 PreRun and PostRun Hoo…

手绘图说电子元器件-电声转换器件

电声转换器件包括能够将电信号转换为声音的扬声器、耳机、讯响器和蜂鸣器,能够将声音转换为电信号的传声器,能够进行电磁转换的磁头和具有压电效应的晶体等。 扬声器 扬声器俗称喇叭,是一种常用的电声转换器件,其基本作用是将电信号转换为声音,在收音机、录音机、电视机…

Linux | 套接字(socket)编程 | TCP协议讲解 | 通信模型搭建

文章目录TCP模型的特性TCP接口介绍TCP服务器套接字设置TCP客户端套接字设置TCP模型的特性 TCP是属于传输层协议的一种,上篇博客介绍了另一种传输层协议——UDP,关于它们之间的区别,这里再提一下 TCPUDP传输层协议传输层协议有连接无连接可靠…

Word控件Spire.Doc 【评论】教程(3):在C#、VB.NET中从Word文档中提取注释并保存在TXT文件中

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下,轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具,专注于创建、编辑、转…

[Leetcode] 合并两个有序数组、链表

1.合并两个有序数组 原地合并数组,即不使用额外的空间 --> 使用三个指针,从尾部往前处理 题目链接:https://leetcode.cn/problems/merge-sorted-array/ nums1 总长度 mn,自身长度m;nums2 自身长度n, 使…

SSRF渗透与攻防(一)

目录 前言 SSRF是什么 危害(利用方式): SSRF漏洞原理: CURL协议: SSRF常见场景 社会化分享功能: 如何发现SSRF漏洞 工具利用: 如何防御SSRF漏洞 前言 SSRF(Server-Side Request Forgery:服务器端请求伪造) 是…

rocketmq 实战问题汇总

rocketmq 实战过程会遇到这样或者那样的问题,今天我们专门抽出一篇文章来分析一下汇总一下,避免以后踩同样的坑: 1、找不到JDK的问题: 综合分析,是因为JDK安装的目录有空格导致的:Program Files 两个单词之…

电子招标采购系统源码—企业战略布局下的采购寻源

​ 智慧寻源 多策略、多场景寻源,多种看板让寻源过程全程可监控,根据不同采购场景,采取不同寻源策略, 实现采购寻源线上化管控;同时支持公域和私域寻源。 询价比价 全程线上询比价,信息公开透明&#xff0…

CANoe—基于DoIP通过CAPL实现与ECU通信测试

如下连接是在CANoe中基于DoIP通过加载诊断数据库实现CANoe与待测ECU诊断通信: CANoe链接 本文继续此话题,通过一个简单的CAPL Demo,实现CANoe与ECU进行DoIP通信。 首先在CANoe新建Ethernet工程: 在CANoe “Simulation Setup”中新建CAPL Test Module: 在此例中采用CANo…

DHCP原理和实验

目录 DHCP基本认识和原理 场景一、同网段DHCP 场景二、不同段DHCP(中继DHCP) DHCP基本认识和原理 DHCP(Dynamic Host Configuration Protocol动态主机协议)。 作用:为局域网络中主机动态分发地址,以及…

C#里使用ExcelDataReader读取EXCEL文件的简单方法

C#里使用ExcelDataReader读取EXCEL文件的简单方法 读取EXCEL文件是比较常见的需求,所以在C#里也会经常遇到。 比如客户需要保存的条码数据,他们可以使用EXCEL来扫码进去,并且进行修改和核验, 然后软件就需要读取这些EXCEL文件,并且从这里得到所需要的条码。 要从EXCEL里…

Android 查看隐私权限方法调用者集合

背景 辛辛苦苦迭代完当前版本,准备推送 App 到应用市场上架,却收到拒审通知:App隐私合规上架护航版检测报告, 报告内容: 场景2:APP以隐私政策弹窗的形式向用户明示收集使用规则,未经用户同意,…

页面崩溃了!记录一次测试中出现的前端内存溢出现象

前情回顾 前几天在一次web应用测试过程中,前端发起了向后端接口的查询请求,由于后端响应较慢,前端一直处于等待响应返回状态。在几分钟后,突然页面出现让人惊悚的“噢噢,页面崩溃了”几个大字。 看到这几个字的一瞬间…

基于GitLab构建企业级CICD-Gitlab-Runner

背景 在过往企业开发中,大部分企业从开发到测试,到部署目前还是手工进行在一些某些中大型企业中,目前构建及部署还是直接使用二进制包部署,或直接单机运行在某些场合下,仓库中代码的编译需要硬件支持,致使…

SSM框架学习记录-Maven_day01

1.分模块开发 将原始模块按照功能拆分成若干个子模块,方便模块间的相互调用,接口共享:比如有订单和商品两个模块,它们都需要使用到商品的模型类,如果在这两个模块中都写模型类,就会出现重复代码&#xff0c…

Doris部分列更新在广告行业应用

背景:业务需要在不同的时间点对同一个session_id上的广告行为(展示、点击、转换等)数据的更新。 基于HBase归因 更新原理:以session_id为Key在HBase中写入数据,数据更新是先点查到历史数据,补齐当前数据后…