基本打印格式:
printf("\033[字背景顏色;字體顏色m字符串\033[0m" );
printf("\033[41;32m字體背景是紅色,字是綠色\033[0m\n");
41是字背景顏色, 32是字體的顏色, 字體背景是紅色,字是綠色是要輸出的字符串. 后面的\033 ...\033[0m是配對的為控制碼。
先來說一下顏色和背景的代碼
顏色代碼:
QUOTE:
字背景顏色范圍: 40--49 字顏色: 30--39
40: 黑 30: 黑
41: 紅 31: 紅
42: 綠 32: 綠
43: 黃 33: 黃
44: 藍 34: 藍
45: 紫 35: 紫
46: 深綠 36: 深綠
47: 白色 37: 白色
注意到總體范圍是從30到49,在printf("\033[41;32m字體背景是紅色,字是綠色\033[0m\n");中\033[41;32m是可以單獨只指定背景顏色或者字體顏色的,這樣另外的部分就是默認狀態如\033[32m 表示字體是綠色背景默認而\033[41m 表示背景為紅色字體默認。
在“字體背景是紅色,字是綠色”這一部分可以是要輸出的字符串,也可以是格式控制串包含格式控制符如printf("\033[41;32m%2d\033[0m\n",a);則會輸出int型的a,背景占2字符為紅色,字體為綠色。
我們再說一下控制碼,不同的控制碼會產生不同的效果,這些屬性可以寫在后面,也可以加載前面如printf("\033[0m\033[41;32m%2d\n",a);也是可以的,不同在于是先打印再添加屬性還是先添加屬性再打印還是先打印再添加屬性。當然一次也可以添加多個屬性,總體原則是格式為:\33[ + 屬性代碼 隨你喜好開心就好。
ANSI控制碼:
QUOTE:
\033[0m 關閉所有屬性這個關閉的屬性是指的之前通過ANSI控制碼獲得的屬性,這些屬性得后遇到\033[0m會關閉。
\033[1m 設置高亮度 (光標過出均變為背景色)
\03[4m 下劃線
\033[5m 閃爍
\033[7m 反顯
\033[8m 消隱
\033[30m -- \033[37m 設置前景色
\033[40m -- \033[47m 設置背景色
\033[nA 光標上移n行
\03[nB 光標下移n行
\033[nC 光標右移n行
\033[nD 光標左移n行
\033[y;xH設置光標位置
\033[2J 清屏
\033[K 清除從光標到行尾的內容
\033[s 保存光標位置
\033[u 恢復光標位置
\033[?25l 隱藏光標
\33[?25h 顯示光標
在說一下,其實這些屬性信息中的相關數字也是可以通過變量的傳入傳進去的例如:
for (x = p_x + 36, y = p_y + 1; y <= 25; y++)
printf("\33[%d;%dH\33[41m==\33[0m", y, x);
這里光標的衛士就是通過變量傳入的,==是打印內容,顏色也是這樣,我們可以建立隨機傳入。這樣, 在某些時候就可以實現動態的輸出,或者打印一些圖案。