前言 本文的文字及圖片來源於網路,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯繫我們以作處理。 作者:William Mannard 歡迎點擊右上角關註小編,除了分享技術文章之外還有很多福利,私信學習資料可以領取包括不限於Python實戰演練、PDF電子文檔、面試集錦、 ...
前言
本文的文字及圖片來源於網路,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯繫我們以作處理。
作者: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