我们不一样①

我们不一样①

从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.一个运动的火车


​​

相关推荐
陈年老古董2 分钟前
MediaPipe 姿态检测与脸部关键点检测
笔记·python·opencv·学习·dlib
彧azz21 分钟前
操作系统时间管理与系统核心板块学习总结
c语言·笔记·学习·系统架构
zhangrelay1 小时前
《机器人控制器设计与编程》课程习题资料-2026
linux·笔记·学习·ubuntu
志尊宝1 小时前
Vue3 零基础每日笔记(055):组件里正确使用 store——storeToRefs 解构与 $patch 批量修改
笔记·vue·html·前端开发·软件开发
kkkkkkkkkk_Z1 小时前
新手自学嵌入式|学习日记:从C语言到51单片机基础(GPIO、中断、定时器与PWM篇)
linux·笔记·学习·51单片机
陈年老古董2 小时前
微博情感分析项目学习笔记
笔记·python·学习·机器学习·项目
2601_960631232 小时前
如何用公开数据接口查询制药企业资质信息
笔记
小刘在重生~2 小时前
Oracle_day2 单行函数|组函数|分组|伪列|子查询|分页|多表连接
笔记·oracle·面试
AAA代码批发商3 小时前
Days 47 IMX6ULL 裸机开发:按键轮询实验 + 外部中断原理剖析(上)
笔记·学习·imx6ull·裸机开发·#arm中断
sunoo-2293 小时前
【ARM嵌入式学习笔记Day6】一文打通i.MX6ULL时钟体系:PLL/PFD/预分频+滞回比较器全解析
arm开发·笔记·vscode·单片机·imx6ull·汇编语言