python字幕雨效果实现

技能实验室 发表于 2022/11/18 09:42:32 2022/11/18
【摘要】 先看最终实现的效果图:使用python实现以上字幕雨效果,用到的主要库是pygame;pygame不是内置模块,需要先安装一下: 安装pygame安装方式推荐有很多种,推荐使用pip;pip 是 Python 的包安装程序。其实,pip 就是 Python 标准库(The Python Standard Library)中的一个包,只是这个包比较特殊,用它可以来管理 Python 标准库(T...

先看最终实现的效果图:
在这里插入图片描述

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

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

安装pygame

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

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

安装pip:

  • 安装python; 这个是必须安装的;
  • 下载pip:

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

  • 打开命令行窗口,进入到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()

完整代码实现:

#! /bin/python3
#! encoding:utf-8

import pygame
import sys
import 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:
        for event in pygame.event.get():
            # 判断用户是否点了"X"关闭按钮,并执行if代码段
            if event.type == pygame.QUIT:
                #卸载所有模块
                pygame.quit()
                #终止程序,确保退出程序
                sys.exit()

        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
  
            # 超过界面高度或随机数,下雨位置置0
            if drops[i] * font_height > height or random.random() > 0.95:
                drops[i] = 0
  

        pygame.display.flip()

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。