【python】python实现代码雨【附源码】

欢迎来到英杰社区icon-default.png?t=N7T8https://bbs.csdn.net/topics/617804998

一、效果图:

 二、准备工作

(1)、导入必要的模块:

       代码首先导入了需要使用的模块:requests、lxml和csv。

import requests
from lxml import etree
import csv

        如果出现模块报错

c124a1693bfc457ba1f2909ee9d299fc.png

        进入控制台输入:建议使用国内镜像源

pip install 模块名称 -i https://mirrors.aliyun.com/pypi/simple

         我大致罗列了以下几种国内镜像源:

清华大学
https://pypi.tuna.tsinghua.edu.cn/simple

阿里云
https://mirrors.aliyun.com/pypi/simple/

豆瓣
https://pypi.douban.com/simple/ 

百度云
https://mirror.baidu.com/pypi/simple/

中科大
https://pypi.mirrors.ustc.edu.cn/simple/

华为云
https://mirrors.huaweicloud.com/repository/pypi/simple/

腾讯云
https://mirrors.cloud.tencent.com/pypi/simple/

三、详解代码

1. 导入所需的模块:
 

import random
import pygame

2. 定义窗口的宽度、高度和字体大小:
 

PANEL_width = 1080
PANEL_hight = 500
FONT_PX = 15

3. 初始化Pygame模块并创建窗口:
 

pygame.init()
winSur = pygame.display.set_mode((PANEL_width, PANEL_hight))

4. 定义字体类型和大小:

font = pygame.font.SysFont("123.ttf", 25)


请注意,这里使用的字体名称是"123.ttf",你需要将其替换为你自己的字体文件路径或字体名称。

5. 创建背景表面并填充半透明黑色背景:
 

bg_suface = pygame.Surface((PANEL_width, PANEL_hight), flags=pygame.SRCALPHA)
pygame.Surface.convert(bg_suface)
bg_suface.fill(pygame.Color(0, 0, 0, 28))

6. 设置窗口背景颜色为黑色:
 

winSur.fill((0, 0, 0))

7. 定义字母列表:
 

letter = ['y', 'a', 'n', 'y', 'i', 'n', 'g', 'j', 'i', 'e', 'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'z', 'x', 'c',
          'v', 'b', 'n', 'm']

8. 创建字母表面:
 

texts = [
    font.render(str(letter[i]), True, (0, 255, 0)) for i in range(26)
]

9. 计算出可以容纳多少列字母:
 

column = int(PANEL_width / FONT_PX)

10. 定义一个列表来存储每列字母的下落距离:
 

drops = [0 for i in range(column)]

11. 进入主循环,处理事件和绘制字母:
 

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            exit()
        elif event.type == pygame.KEYDOWN:
            chang = pygame.key.get_pressed()
            if (chang[32]):
                exit()
    
    pygame.time.delay(30)
    winSur.blit(bg_suface, (0, 0))
    
    for i in range(len(drops)):
        text = random.choice(texts)
        winSur.blit(text, (i * FONT_PX, drops[i] * FONT_PX))
        drops[i] += 1
        
        if drops[i] * 10 > PANEL_hight or random.random() > 0.95:
            drops[i] = 0
    
    pygame.display.flip()

        在主循环中,代码首先处理窗口关闭事件和按键事件。然后,通过延时控制字母下落的速度,并将背景表面绘制到窗口上。接下来,遍历每一列字母,随机选择一个字母表面并将其绘制到窗口上,同时更新该列字母的下落距离。如果下落距离超过窗口高度或者随机数大于0.95,则将下落距离重置为0,实现字母连续下落的效果。最后,刷新窗口显示内容。

欢迎来到英杰社区icon-default.png?t=N7T8https://bbs.csdn.net/topics/617804998

四、部分代码:

import random
import pygame
# 定义面板宽度和高度,字体大小
PANEL_width = 1080
PANEL_hight = 500
FONT_PX = 15
# 初始化pygame模块
pygame.init()
# 创建窗口并设置大小
winSur = pygame.display.set_mode((PANEL_width, PANEL_hight))
# 定义字体类型和大小
font = pygame.font.SysFont("123.ttf", 25)
# 创建背景表面
bg_suface = pygame.Surface((PANEL_width, PANEL_hight), flags=pygame.SRCALPHA)
pygame.Surface.convert(bg_suface)
bg_suface.fill(pygame.Color(0, 0, 0, 28))   # 设置半透明黑色背景
winSur.fill((0, 0, 0))   # 设置窗口背景颜色为黑色


五、完整代码:

        资料获取,更多粉丝福利,关注下方公众号获取

        回复"python代码雨",“代码雨”,“python实现代码雨” 均可获取完整代码

        

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

惬意上手Python —— os模块

首先,这部分很简单,不需要有太多的操作,只需要用的时候你知道该用这个模块下的哪个函数。例如,你想知道当前路径,就该知道用 curdir 这个函数。 在Python中,os模块是一个与操作系统交互的标准库模块&…

前端面试题-(BFC,前端尺寸单位,网站页面常见的优化手段)

前端面试题-BFC,前端尺寸单位,网站页面常见的优化手段 BFC前端尺寸单位网站页面常见的优化手段 BFC BFC(block formartting context)块格式化上下文。是通过独立渲染的区域,它拥有自己的渲染规则,可以决定…

【Linux】-对于信号章节补充的知识点,以及多线程知识的汇总

💖作者:小树苗渴望变成参天大树🎈 🎉作者宣言:认真写好每一篇博客💤 🎊作者gitee:gitee✨ 💞作者专栏:C语言,数据结构初阶,Linux,C 动态规划算法🎄 如 果 你 …

pytest+allure 生成中文报告

背景 已安装pytestallure,生成的报告是英文 allure生成中文报告 参考:allure report 报告中文化及其它优化 方法1:直接在报告中切换中文 方法2:依赖系统中文语言 创建一个setting.js 文件在index.html 同级目录 // 尝试从 l…

Python - 【Socket】消息粘包处理demo(一)

一. 前言 在网络编程中,粘包是指TCP协议在传输过程中,多条数据被合并成一条数据发送或者一条数据被拆分成多个数据发送的现象。 二. 粘包问题的常规处理方法: 使用固定长度的包头 可以在发送数据前先发送一个固定长度的包头,包…

赠书活动~

关注公众号获得,发送抽奖

hcip---ppp协议

一:网络类型----根据二层数据链路层使用协议的不同,进行的划分 MA--多点接入网络 BMA--广播型多点接入网络 NBMA--非广播型多点接入网络 P2P--点到点网络:当网络中只能两台设备存在,那么这样的网络不需要MAC也能进行通信 二层协议…

用Axure RP 9制作滑块

制作流程 1.打开界面 放置一个水平线 修改长为400 线段为5 2.放入圆 如图 3.修改圆的长和宽 如图 4.将圆变成动态面板 5.设置交互事件 如图 6.增加交互事件 7.增加 8.修改成跟随水平

系统架构演变

1.1系统架构的演变 2008年以后,国内互联网行业飞速发展,我们对软件系统的需求已经不再是过去”能用就行”这种很low的档次了,像抢红包、双十一这样的活动不断逼迫我们去突破软件系统的性能上限,传统的IT企业”能用就行”的开发思…

查看并解析当前jdk的垃圾收集器

概述:复习的时候,学看一下。 命令: -XX:PrintCommandLineFlags 打开idea,配置jvm 把上面命令输入jvm options中即可。 举例代码 这个代码的解析,我上篇文章有写,这个跟本文没有任何关系: …

Elasticsearch 常用信息

简述 本文针对 Elasticsearch(简称ES)集群6.x版本出现故障时,可通过提供的命令进行排查。 1、集群健康状态 集群健康状态状态说明red不是所有的主要分片都可用。表示该集群中存在不可用的主分片。可以理解为某个或者某几个索引存在主分片丢失…

C#,入门教程(31)——预处理指令的基础知识与使用方法

上一篇: C#,入门教程(30)——扎好程序的笼子,错误处理 try catchhttps://blog.csdn.net/beijinghorn/article/details/124182386 Visual Studio、C#编译器以及C#语法所支持的预处理指令,绝对是天才设计。 编译程序的时候会发现&am…

AI搜索引擎Perplexity来了,谷歌等老牌搜索引擎或许会有新的威胁?

Perplexity AI 是一家 AI 搜索初创公司,它通过结合内容索引技术和大型语言模型的推理能力,提供更便捷和高效的搜索体验。另外,最近很火的小兔子Rabbit R1硬件AI设备中的搜索功能正是这家公司的杰作。在短短一年半的时间里,一个企业…

Qt6入门教程 10:菜单栏、工具栏和状态栏

目录 一.菜单栏 1.Qt Designer 1.1添加菜单和菜单项 1.2添加二级菜单 1.3给菜单和菜单项添加图标 1.4给菜单项添加功能 2.纯手写 二.工具栏 1.Qt Designer 1.1添加工具栏按钮 1.2工具栏的几个重要属性 2.纯手写 三.状态栏 1.Qt Designer 2.纯手写 用Qt Creator新…

Elasticsearch分布式一致性原理剖析(二)-Meta篇

Elasticsearch分布式一致性原理剖析(二)-Meta篇 - 知乎 本文首发于云栖社区(Elasticsearch分布式一致性原理剖析(二)-Meta篇-博客-云栖社区-阿里云 ),由原作者转载。 前言 “Elasticsearch分布式一致性原理剖析”系列将会对Elasticsearch的分布式一致性原理进行…

DAY07_SpringBoot—用法整合MyBatis

目录 1 SpringBoot 用法1.1 环境切换1.1.1 业务需求1.1.2 多环境编辑 1.2 热部署1.2.1 需求说明1.2.2 引入jar包1.2.3 配置IDEA环境 2 SpringBoot整合Mybatis2.1 导入数据库2.2 创建SpringBoot项目2.2.1 创建项目2.2.2 生成POM.xml文件如下2.2.3 Mavenjar包作用范围2.2.4 数据源…

【JavaWeb】日程管理系统 项目搭建 第二期

文章目录 一、数据库准备二、导入依赖 与 JDBC工具类三、pojo包处理四、daodao包工具类 五、service六、controllerservlet 基类 反射 七、加密工具类 MD5八、页面文件九、业务代码9.1 注册业务处理9.2 登录业务处理 总结 一、数据库准备 创建数据库: SET NAMES …

python-自动篇-办公-用Excel画画

文章目录 代码所遇问题ModuleNotFoundError: No module named xlsxwriterFileNotFoundError: [Errno 2] No such file or directory: 111.jpg 效果附件图片excel 代码 # coding: utf-8from PIL import Image from xlsxwriter.workbook import Workbookclass ExcelPicture(obje…

风二西CTF流量题大集合-刷题笔记|NSSCTF流量题(2)

21.[SUCTF 2018 招新赛]follow me SUCTF{password_is_not_weak} 22.[MoeCTF 2022]usb moectf{Learned_a6ou7_USB_trffic} 23.[黑盾杯 2020]Blue flag{Gre4t_j0B_ON_This_Blue_sh4rk} 24.[蓝帽杯 2022 初赛]domainhacker2 提交发现,07ab403ab740c1540c378b0f5aaa4…

vue(vue2)使用svg格式图标

先安装插件 配置svg文件夹,新建icons文件,svg文件夹放svg后缀文件 index.js文件中的配置 import Vue from "vue" import svgIcon from "/common/iconSvg/index.vue"Vue.component(svg-icon,svgIcon) //挂载全局组件//下面…