前言
本文的文字及圖片來源於網絡,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯繫我們以作處理。
作者:William Mannard
歡迎點擊右上角關注小編,除了分享技術文章之外還有很多福利,私信學習資料可以領取包括不限於Python實戰演練、PDF電子文檔、面試集錦、學習資料等。
使用Python模擬電影《黑客帝國/The Matrix》中代碼雨效果。該項目支持用戶自定義顯示的字符集,接受鍵盤控制。
開發工具
Python版本:3.6.4
相關模塊:
random模塊;
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