Py学习  »  Python

骇客帝国的字幕雨——Python演示

安费诺传感器学堂 • 1 年前 • 273 次点击  
小编之前的博文中用到了一些数据插图,多为代码或者Excel处理实现的。今天来个纯的,看看我们从字幕雨中能看到Matrix中的动静不。
不说了,Smith又在堵高速截车了...

# Python-3.11import cursesimport randomimport timeimport keyboard
def main(stdscr): # 设置颜色,我们使用绿色 try: curses.curs_set(0) #消除鼠标位置闪动 curses.start_color() curses.init_pair(1, curses.COLOR_GREEN, curses.COLOR_BLACK) #表示定义了一个颜色对,编号为1,前景色是绿色,背景色是黑色
# 获取屏幕的高度和宽度:y为行数方向,x为列方向 height, width = stdscr.getmaxyx()
# 为了让屏幕不显得拥挤,获取所有偶数列作为输出列        # 上面的截图是每列都输出的形式        even_columns_List = list(range(0, width, 2))
        # 生成一个列表位置列组        drops = [0]*width   # width,定义多了,其实是为了方便偷懒
while True: # 随机选列 column = random.choice(even_columns_List) # 生成随机字符,并设置颜色 matrix_char = chr(random.randint(33, 126)) #'drops[column]`:字符的 y 坐标(行号) #`column`:字符的 x 坐标(列号) #`matrix_char`:要显示的字符 #`curses.color_pair(1)`:字符的颜色 stdscr.addch(drops[column], column, matrix_char, curses.color_pair(1)) # 刷新屏幕 stdscr.refresh()             # 当列已经达最低,或者随机选中,则重置鼠标位置到0 if drops[column] >= height-2 or random.choice([True] + [False]*18): for k in range(height-1): stdscr.addch(k, column, ' ')                 drops[column] = 0
# 刷新屏幕 stdscr.refresh() else: drops[column] += 1             if keyboard.is_pressed('q'): # 如果按键 'q'其实很难检测到, 通过:Ctrl+C 停止运行 break # 结束循环 time.sleep(0.002) # 控制字幕显示及刷新的速度 except Exception as e: print(e)
if __name__ == "__main__": curses.wrapper(main)


  • 屏幕位置

  • 安装插件


curses插件(其他的插件类似操作),在python所在环境的终端下,输入:

pip install windows-curses


  • 运行代码


假设将代码保存为Matrix_Digital_Rain.py,仍然在终端方式的python环境下,输入以下指令执行该代码将在当前终端窗口看到循环运行字幕雨:

python Matrix_Digital_Rain.py


大家完全可以根据自己的喜好修改这个代码让字幕以不同的方式下...


  • 停止运行:比较暴力——Ctrl-C





Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/165323
 
273 次点击