python实现字幕雨效果实现

news/2024/11/17 18:57:37/

先看最终实现的效果图:

使用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 = 15font = 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# 超过界面高度或随机数,下雨位置置0if drops[i] * font_height > height or random.random() > 0.95:drops[i] = 0
复制代码
  • 实时更新屏幕

pygame.display.flip()

完整代码实现:

import pygame, sys,randompygame.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 = 15font = 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] += 1if drops[i] * font_height > height or random.random() > 0.95:drops[i] = 0pygame.display.flip()

http://www.ppmy.cn/news/7639.html

相关文章

搭建开源版个人图床

在微博图床、gitee、jsDelivr 陆续被 ban 的今天,很有必要搭建自己的图床系统了。 兰空图床 兰空图床官网:https://www.lsky.pro docker版本:https://hub.docker.com/r/halcyonazure/lsky-pro-docker 本次讲解使用 docker 版本进行部署使用 …

前端接入keycloak的几种方式

方式一:keycloak-js 这种方式就像使用QQ登录一样,登录会跳转到 keycloak 给的登录界面。 安装: npm i keycloak-js使用: import Keycloak from keycloak-jsconst keycloak: any Keycloak({url: https://xxx.com/, // 远程地址…

阿里妈妈内容风控模型预估引擎的探索和建设

作者:徐雄飞、金禄旸、滑庆波、李治 内容作为营销的重要载体,能够促进信息的交流和传播。在营销场景中,广告高曝光的特性放大了风险外漏带来的一系列问题,因此对内容的风控审核就显得至关重要。本文将为大家分享阿里妈妈内容风控模…

AI小组2022总结

时间如流水,2022年即将过去,也到了一年一度年终终结的时候。CSDN-AI小组在2022年在AI之路上又有哪些积累呢? 问答机器人 在chatGPT风靡的时候,所有人都被它的强大惊叹到了。chatGPT的实用范围还有待各种不同的用户去尝试。从技术…

带你认识不一样的人工智能

人工智能简称AI,它是研究、模拟、延伸和扩展人类智能的理论、方法、技术和应用系统的新兴技术。人工智能是计算机科学的一个领域,正在向机器传递智能,通过模拟人的某些思维过程和智能行为,让机器像人类一样工作、反应和决策。自人…

反向传播算法和计算图详细介绍及其原理详解

相关文章 梯度下降算法、随机梯度下降算法、动量随机梯度下降算法、AdaGrad算法、RMSProp算法、Adam算法详细介绍及其原理详解反向传播算法和计算图详细介绍及其原理详解 文章目录相关文章前言一、反向传播算法1.1 什么是反向传播算法?1.2 更泛化的例子二、计算图2…

【vector的各个begin迭代器详解】

前言 本文是熊猫练习stl一段时间之后,对vector容器的各种迭代器产生了很大的好奇心,于是对它们进行了以下探究。 从图中我们可以知道,vector一个有四组不同的迭代器, 其中,字符 ‘c’ 是 const 常量的意思&#xff0c…

企业需要防范的 6 个常见身份攻击手段|身份云研究院

零信任作为新一代的网络安全防护理念,已经成为全球网络安全管理的基石。零信任的核心是 「安全体系架构从网络中心化走向身份中心化」,「以身份为中心」的网络访问控制理念也逐渐被越来越多企业接受并实践。 然而企业在面向用户身份访问和管理的实践中还…