短视频上看到的代码雨,在这里送给想要的小伙伴们!超简单

 

 

前言python

本文的文字及图片来源于网络,仅供学习、交流使用,不具备任何商业用途,版权归原做者全部,若有问题请及时联系咱们以做处理。git

做者:William Mannardgithub

欢迎点击右上角关注小编,除了分享技术文章以外还有不少福利,私信学习资料能够领取包括不限于Python实战演练、PDF电子文档、面试集锦、学习资料等。面试

使用Python模拟电影《黑客帝国/The Matrix》中代码雨效果。该项目支持用户自定义显示的字符集,接受键盘控制。网络

开发工具dom

Python版本:3.6.4curl

相关模块:异步

random模块;async

pygame模块;工具

环境搭建

安装Python并添加到环境变量,pip安装须要的相关模块便可。

因为我的喜欢中国古典文学,对项目代码做了细微的改动,增长了自定义字符集,部分效果展现以下:

 

 

 

下面逐步介绍如何产生代码雨:

  • 模块安装
  • 使用方法
  • 帮助文档

 

1.模块安装

Windows下Anaconda安装:

char_set = {
   'a': 'qwertyuiopasdfghjklzxcvbnm',
   'A': 'QWERTYUIOPASDFGHJKLZXCVBNM',
   'c': 'абвгдежзиклмнопрстуфхцчшщъыьэюя',
   'C': 'АБВГДЕЖЗИКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ',
   'e': '☺☻✌♡♥❤⚘❀❃❁✼☀✌♫♪☃❄❅❆☕☂★',
   'g': 'αβγδεζηθικλμνξοπρστυφχψως',
   'G': 'ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ',
   'k': 'ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン',
   'm': 'ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン1234567890',
   'n': '1234567890',
   'o': 'qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890',
   'r': 'mcclllxxxxvvvvviiiiii',
   'R': 'MCCLLLXXXXVVVVVIIIIII',
   's': '-=*_+|:<>"',
   'S': '`-=~!@#$%^&*()_+[]{}|\;\':",./<>?"',
   'z': '元一二三四五六七八九仪才象行卦宫阴阳太易初始素休生伤杜景死惊开',
   'Z': '乾坎艮震巽离坤兑临兵斗者皆阵列前行甲乙丙丁戊己庚辛壬癸子丑寅卯辰巳午未申酉戌亥',
   'u': args.custom_characters}

Linux下安装:
 

sudo curl -L https://raw.githubusercontent.com/will8211/unimatrix/master/unimatrix.py -o /usr/local/bin/unimatrix
sudo chmod a+rx /usr/local/bin/unimatrix

2.使用方法

改动部分:在代码中增长了中文字符(即z/Z):

char_set = {
   'a': 'qwertyuiopasdfghjklzxcvbnm',
   'A': 'QWERTYUIOPASDFGHJKLZXCVBNM',
   'c': 'абвгдежзиклмнопрстуфхцчшщъыьэюя',
   'C': 'АБВГДЕЖЗИКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ',
   'e': '☺☻✌♡♥❤⚘❀❃❁✼☀✌♫♪☃❄❅❆☕☂★',
   'g': 'αβγδεζηθικλμνξοπρστυφχψως',
   'G': 'ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ',
   'k': 'ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン',
   'm': 'ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン1234567890',
   'n': '1234567890',
   'o': 'qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890',
   'r': 'mcclllxxxxvvvvviiiiii',
   'R': 'MCCLLLXXXXVVVVVIIIIII',
   's': '-=*_+|:<>"',
   'S': '`-=~!@#$%^&*()_+[]{}|\;\':",./<>?"',
   'z': '元一二三四五六七八九仪才象行卦宫阴阳太易初始素休生伤杜景死惊开',
   'Z': '乾坎艮震巽离坤兑临兵斗者皆阵列前行甲乙丙丁戊己庚辛壬癸子丑寅卯辰巳午未申酉戌亥',
   'u': args.custom_characters}

项目中使用argparse模块解析命令行参数和选项;使用curses库提供的绘制字符屏幕和键盘处理的独立于终端的方法。

项目的使用方法:启动Anaconda Prompt,执行帮助文档中的相关命令便可。

经过unimatrix -h调用帮助文档:

 

 

例1:unimatrix -n -l o

 

例2:unimatrix -n -l s

 

例3:unimatrix -a -n -f -s 75 -l Z

 

还可经过键盘输入更改颜色:

 

 

3.帮助文档

语法:
unimatrix [-a] [-b] [-c 颜色] [-f] [-g 颜色] [-h] [-l 字符串] [-n]
          [-o] [-s 速度] [-u 字定义字符]

参数:
-a   异步滚动, 每列移动速度不一样.
-b   仅使用粗体字符.
-c   颜色之一: 绿(默认), 红, 蓝, 白, 黄, 青, 品红, 黑.
-f   启动"flashers, "即字符不断变化.
-g   背景颜色(参照-c).
-h   显示此帮助信息和退出.
-l   选择字符集(参见下述字符集).
-n   禁用粗体(重写-b)
-o   禁用屏幕状态
-s   整数, 最大100. 0为1s刷新延迟, 100无延迟, 负数可下降速度. 默认85.
-t   t秒后退出进程.
-u   字定义显示的字符. 用单引号('')引发特殊转移字符. 例如: -u '#$('
-w   单波模式: 激发绿色代码雨, 退出.

长参数:
-a --asynchronous
-b --all-bold
-c --color=COLOR
-f --flashers
-g --bg-color=COLOR
-h --help
-l --character-list=CHARACTER_LIST
-s --speed=SPEED
-n --no-bold
-o --status-off
-t --time
-u --custom_characters=CUSTOM_CHARACTERS
-w --single_wave

字符集:
当使用 '-l' 或 '--character_list=' 选项, 其后加上如下1个或多个字母:

a   小写字母表
A   大写字母表
c   小写俄罗斯Cyrillic字母表
C   大写俄罗斯Cyrillic字母表
e   常见表情(☺☻✌♡♥❤⚘❀❃❁✼☀✌♫♪☃❄❅❆☕☂★)
g   小写希腊字母
G   大写希腊字母
k   日本katakana(半角)
m   默认'Matrix'集, 等于'knnssss'
n   数字0-9
o   旧风格non-unicode集, 像cmatrix. 等于'AaSn'
r   小写罗马数字(mcclllxxxxvvvvviiiiii)
R   大写罗马数字(MCCLLLXXXXVVVVVIIIIII)
s   黑客帝国中使用的字符子集(-=*_+|:<>")
S   全部经常使用键盘符号(`-=~!z#$%^&*()_+[]{}|\;':",./<>?")
z   周易1(自定义中文)
Z   周易2(自定义中文)
u   使用-u开关选择自定义字符

例如: '-l naAS' 或 '--character_list=naAS' 提供相似cmatrix输出内容. '-l ACG' 使
用全部大写字符集. 屡次使用同一字母可增长字符集的频率。例如,默认设置为'-l knnssss'.

键盘控制:
SPACE, CTRL-c or q   退出
- or LEFT             速度降1
+ or RIGHT           速度增1
[ or DOWN             速度降10
] or UP               速度增10
a                     切换异步滚动
b                     循环使用粗体字符(bold off-->bold on-->all bold)
f                     切换闪烁字符
o                     切换屏幕状态
1 to 9               设置颜色: 1绿,2红,3蓝,4白,5黄,6青,7品红,8黑,9终端默认
! to (               设置背景颜色, 颜色同上, shift+数字

示例:
模拟cmatrix的默认输出(无unicode字符):
  $ unimatrix -n -s 96 -l o
   
周易:
  $ unimatrix -a -n -f -s 75 -l Z

以粗蓝显示字母Linux:
  $ unimatrix -B -u Linux -c blue

使用默认字符集, 加美圆符(注意单引号特殊字符):
  $ unimatrix -l knnssssu -u '$'

不用粗体, 慢速, 表情符号, 数字和其余字符:
  $ unimatrix -n -l ens -s 50