VT100控制码进行终端扩展显示

VT100是一个古老的终端定义,后面出现的终端几乎都兼容这种终端。VT100控制码是用来在终端扩展显示的代码。比如果终端上任意坐标用不同的颜色显示字符。有时又称为ANSI Escape Sequence.

这样想做一个跨平台的小游戏用空上再合适不过。


所有的VT100控制符是 \033打头(即ESC的ASCII码)用输出字符语句来输出。可以在命令行用echo -ne 命令,或者在C程序中用printf来输出VT100的控制字符。


具体格式有两种,
  • 一种数字形式, \033[<数字>m .

    如 \33[40m ,表示让后面字符输出用背景黑色输出 \33[0m表示取消前面的设置。

    其中前景(字符颜色)/背景颜色需要同时输出。
  • 另一种是控制字符形式。即最后一个字符不是m,而是控制字符。

     \033[K 清除从光标到行尾的内容

    \033[nC 光标右移n行



    VT100控制码


    VT100控制码归类如下。

      \33[nA 光标上移n行
      \33[nB 光标下移n行
      \33[nC 光标右移n行
      \33[nD 光标左移n行
      \33[y;xH设置光标位置
      \33[2J 清屏
      \33[K 清除从光标到行尾的内容
      \33[s 保存光标位置
      \33[u 恢复光标位置
      \33[?25l 隐藏光标
      \33[?25h 显示光标



    VT100数字型控制码


    \33[0m 关闭所有属性
      \33[1m 设置高亮度
      \33[4m 下划线
      \33[5m 闪烁
      \33[7m 反显
      \33[8m 消隐
      \33[30m – \33[37m 设置前景色
      \33[40m – \33[47m 设置背景色



    VT100关于颜色的说明.


    VT100的颜色输出分为,注意要同时输出前景的字符颜色和背景颜色。


    背景颜色范围:40—-49
      40:黑
      41:深红
      42:绿
      43:黄色
      44:蓝色
      45:紫色
      46:深绿
      47:白色
      前景字符颜色:30———–39
      30:黑
      31:红
      32:绿
      33:黄
      34:蓝色
      35:紫色
      36:深绿
      37:白色

    这样输出一个字符串比较完整如下

    echo -ne “\033[字背景颜色;字体颜色m字符串\033[0m”

    例:

    echo -ne “\033[41;36m something here \033[0m”



    常见样例


    echo -ne “\033[2J” #清屏

    echo -ne “\033[47;30m Andrew Huang \033[0m” #黑底白字输出Andrew Huang

    echo -ne “033[5;10H \033[42;33m abc \033[0m” #(10,5)输出绿底黄字。



    关于VT100控制码编码


    VT100只要printf打印相应的字符串即可支持相应功能,但是因为输出控制符虚列太多于难记,因此可通用一些宏来简化其操作。




    参考资料:


    文本游戏网站


    VT100编码