用Python print画一条龙,有眼睛,会动,彩色的,还会喷火那种 |Python 主题月

6,462 阅读2分钟

本文正在参加「Python主题月」,详情查看 活动链接

前言

古有 div画条console画龙

今有我 Python print战龙一条目光凶猛,霸气红色,爱运动,能战斗的霸王龙

上面的都是产品说的,我是研发, 所以,大家懂的,从产品到设计, 从设计到实现, 每一步都是有差距的。

预览

召唤巨龙!!!

实际的效果会明显好于GIF图的效果, 相信我,不然可以下载源码自行体验。

dragon (2).gif

思路

像素画。

  1. 通过一些点形成轮廓
  2. 定时刷新,欺骗人类的眼睛,形成连贯动画。

设计稿
像素龙

实现难点

请注意:
开发环境: windows , Python3.9.1

像素点怎么生成

特殊的字, ,看到没,这玩意也是字。

眼睛

还是特殊的字,, 看到没,这玩意也是字。

如果画出图形和生成动画

Python的 """这能输出多行文本。
代码如下,就生成了栩栩如生,威风凌凌的霸王龙。

注意代码颜色为红色,输出图案并不是红色

""" 
                                        ∎∎∎∎∎∎∎∎∎∎∎
                                        ∎∎ ⊙ ∎∎∎∎∎∎∎∎
                                        ∎∎∎   
                                        ∎∎∎∎∎∎∎∎∎∎∎
      ∎                              ∎∎∎∎  
      ∎∎                            ∎∎∎∎ 
      ∎∎∎    ∎∎∎∎∎∎              ∎∎∎∎∎
     ∎∎∎     ∎∎∎∎∎∎∎∎∎          ∎∎∎∎∎  
    ∎∎∎∎∎   ∎∎∎∎∎∎∎∎∎∎∎∎       ∎∎∎∎∎∎
    ∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎          
        ∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
            ∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
              ∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
               ∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
                 ∎∎          ∎∎    
                ∎∎         ∎∎
               ∎∎         ∎∎
               ∎          ∎
               ∎∎∎       ∎∎∎∎
    """

连续的生成动画,需要计时器,简单粗暴的方式:

import time
time.sleep(0.016)

如果你是连续的输出,控制台会越来越长,不会形成动画,所以我们要清空屏幕:

import os
os.system("cls")

所以,形成帧动画的简单代码形式:

import os
import time

while (True):
    os.system("cls")
    ... other code ....
    time.sleep(0.016)

到此为止,基本完成,一起看看完整的代码,一共56行

import os
import time

def print1():
    print(""" 
                                        ∎∎∎∎∎∎∎∎∎∎∎
                                        ∎∎ ⊙ ∎∎∎∎∎∎∎∎
                                        ∎∎∎   
                                        ∎∎∎∎∎∎∎∎∎∎∎
      ∎                              ∎∎∎∎  
      ∎∎                            ∎∎∎∎ 
      ∎∎∎    ∎∎∎∎∎∎              ∎∎∎∎∎
     ∎∎∎     ∎∎∎∎∎∎∎∎∎          ∎∎∎∎∎  
    ∎∎∎∎∎   ∎∎∎∎∎∎∎∎∎∎∎∎       ∎∎∎∎∎∎
    ∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎          
        ∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
            ∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
              ∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
               ∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
                 ∎∎          ∎∎    
                ∎∎         ∎∎
               ∎∎         ∎∎
               ∎          ∎
               ∎∎∎       ∎∎∎∎
    """)

def print2():
    print(""" 
                                        ∎∎∎∎∎∎∎∎∎∎∎
                                        ∎∎ ⊙ ∎∎∎∎∎∎∎∎
                                        ∎∎∎               ∎∎∎∎
                                        ∎∎∎∎∎∎∎∎∎∎∎
    ∎                                ∎∎∎∎  
    ∎∎                              ∎∎∎∎ 
    ∎∎∎      ∎∎∎∎∎∎              ∎∎∎∎∎
     ∎∎∎     ∎∎∎∎∎∎∎∎∎          ∎∎∎∎∎  
    ∎∎∎∎∎   ∎∎∎∎∎∎∎∎∎∎∎∎       ∎∎∎∎∎∎
    ∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎          
        ∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
            ∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
              ∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
               ∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
                 ∎∎          ∎∎    
                  ∎∎          ∎∎
                   ∎∎          ∎∎
                   ∎           ∎
                   ∎∎∎        ∎∎∎
    """)

while (True):
    os.system("cls")
    print1()
    time.sleep(0.016)
    os.system("cls")
    print2()
    time.sleep(0.016)

到此为止,输入都是白色的,输出大致是这个样子。
不行,没有颜色,缺少灵魂,霸气不足。

image.png

上色

这里查询到好几种方案

  1. \033方案
  2. Python库 termcolor
  3. Python在cmd上打印彩色文字

Python在cmd上打印彩色文字方法,一尝试,可用。

    printGreen('printGreen:Gree Color Text')
    printRed('printRed:Red Color Text')
    printYellow('printYellow:Yellow Color Text')

image.png

把代码放到color.py里面,稍微调整一下代码: 核心一句: print = color.printRed

print = color.printRed
while (True):
    os.system("cls")
    print1()
    time.sleep(0.016)
    os.system("cls")
    print2()
    time.sleep(0.016)

红色巨龙出现:

image.png

写在最后

客官,你觉得可还行。

产品验收

以下纯属玩笑

你这是条龙?

我递根烟,说附近有一家好吃的日本料理, 您再看看。

产品说: 我再看看,嗯,有点像,火力也很萌。

产品说: 怎么感觉少了些啥,哦,没有手。

我说: 是条内敛的龙,你看马上下班啦。

产品说: 有创新,行,走吧。

最最后

等你来评,等你来验收。

正在参加「Python主题月],您的赞评就是最大的支持。