我们不一样①

我们不一样①

从hello world开始

别人的hello world​​

我们的hello world

代码展示

c 复制代码
#include <stdio.h>
int main(){
	printf("\033[31mhello world\033[0m"); 
	getchar();
	return 0;
} 

此处用了 ANSI转义序列

ANSI转义序列是一种带内信号的转义序列标准,用于控制视频文本终端上的光标位置、颜色和其他选项。在文本中嵌入确定的字节序列,大部分以ESC转义字符和[字符(\033[)开始,终端会把这些字节序列解释为相应的指令,而不是普通的字符编码。

ANSI转义序列

字符渲染序列(SGR)

字符渲染序列用来描述此序列之后的字符在终端中的呈现格式. 它采用字母 m 作为结尾. 在中间的 code 部分, 可以使用 ;>分号来分隔不同的样式码.

它的形式类似于 x1b[31;43m 或 \033[31;43m , 这样的 CSI 也被称为 Select Graphic Rendition (SGR) 序列.

大多数终端支持 4 bit 色彩与 8 种样式:

前景色代码

F_BLACK = 30

F_RED = 31

F_GREEN = 32

F_YELLOW = 33

F_BLUE = 34

F_PURPLE = 35

F_LIGHTBLUE = 36

F_WHITE = 37

背景色代码

B_BLACK = 40

B_RED = 41

B_GREEN = 42

B_YELLOW = 43

B_BLUE = 44

B_PURPLE = 45

B_LIGHTBLUE = 46

B_WHITE = 47

效果代码

X_NULL = 0 # 清空

X_BOLD = 1 # 加粗

X_LIGHT = 2 # 浅色

X_ITALIC = 3 # 斜体

X_UNDERLINE = 4 # 下划线

X_BLINK = 5 # 闪烁

X_NEGA = 7 # 负片

X_TRANSPARENT = 8 # 透明

例如 printf("\033[31;43mhello world\033[0m"); 将会呈现为黄底红字的 Hello World.

在末尾的\033 x1b[0m 将会清空样式, 由于 CSI 将会影响之后的所有输出, 如果不清空的话, 会导致之后的所有输出都具有此样式.

有些终端可接受 8 bit 256 色, 这被称作 "True Color", 现代终端模拟器甚至可以支持 24bit 颜色,

已经是标准的图像颜色支持了.

24bit 色彩使用 RGB 序列, 以这样的形式输出:

\033[38;2;r;g;b m 前景色

\033[48;2;r;g;b m 背景色
示例不是很清楚,要仔细看看:

光标移动序列

转义序列 作用

CSIA 光标向上移动 n 行

CSIB 光标向下移动 n 行

CSIC 光标向前移动 n 列

CSID 光标向后移动 n 列

CSI;H 光标移动到第 n 行, 第 m 列

清屏指令

CSIcJ 清空屏幕, 当 c 为: 0: 清空光标以下区域 1: 清空光标以上区域 2: 清空全部

CSIcK 清空行, 当 c 为: 0: 清空光标之后区域 1: 清空光标之前区域 2: 清空整行

使用宏可以方便控制。(仅仅用前景色举例),也可以用函数实现

思考练习

1.画出俄罗斯方块的所有形状。

截图来源 23物联网工程1班 陈天翔

2.一个运动的火车


​​

相关推荐
Li_RuiQi11 小时前
DAgger方法演进_独立学习笔记
笔记·学习·计算机视觉
Li_RuiQi16 小时前
DAgger与交互式模仿学习_ACT学习笔记
笔记·学习
He BianGu16 小时前
【笔记】C# 中BindingFlags的详细作用
笔记·c#
AI视觉网奇16 小时前
turtle 入门教程笔记
笔记
跨知易知识产权17 小时前
美国专利确权是什么,和专利诉讼有什么不一样?
笔记
杨逢昌工厂6S管理17 小时前
126-杨逢昌6S三环体系:越做越乱的现场熵增机理与基准化治理——一线现场诊断笔记
经验分享·笔记·职场和发展·学习方法
悟道书生17 小时前
若依 RBAC 权限控制学习笔记
java·网络·笔记·sql·学习·vue
陈哈哈111118 小时前
折腾了半天,总算把 Vim 9.2 装明白了
笔记
陈哈哈111118 小时前
折腾了半天,总算把 OpenGL 的开发环境给装明白了
笔记
深圳老胡18 小时前
STM32F103 硬件 SPI 与软件 IO 模拟 SPI 最高速度差异详解
笔记·stm32·单片机·代码规范·1024程序员节