C++ 函式筆記:setColor、system(‘color 0a’)、gotoxy

Posted on

有時候寫 code 就是會手癢想美化一下,就會開始上網找要怎麼改顏色、版面調整。雖然說現在搜尋引擎已經很方便了,但還是想記錄一下之前做專題時用到的幾個好用的函式,以後要用的時候就可以輕鬆地達成目的。

本篇文章包含下列三個函式的實作與解說:

  • setColor():指定局部色彩
  • system('color 0a'):指定全畫面色彩
  • gotoxy():更改游標位置

如果以上三者有你需要的,就請繼續看下去吧!


SetColor(); 更改顏色

步驟很簡單~只要將下面這堆程式碼加到你的 .cpp 裡面

再加上其他小細節(宣告還是之類的),就會有個函式讓你可以使用,這邊就不多說了。

#include<windows.h>
void SetColor(int color = 7)
{
  HANDLE hConsole;
  hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
  SetConsoleTextAttribute(hConsole,color);
}

需要更改顏色時只要呼叫  SetColor(<strong>數字</strong>);就可以更改顏色了。

數字對應到的文字顏色以及背景顏色如下圖:

SetColor

舉例來說, 我今天想要出現 黑底紅字 那我只要呼叫 SetColor(12); 就可以完成願望

再舉例來說, 我今天想要 白底黑字 我只要呼叫 SetColor(240); 就可以達成效果

那今天我想要變回預設值呢?可以直接輸入 SetColor(); 就會切回原本顯示的樣子了。

是不是很方便呀?以上就是 SetColor() 這個函式的的使用方式。


system(“color 0a");

學了局部改變顏色的方法,就順便學一下霸氣的、改整面顏色的方法吧!

windows 要呼叫很簡單,只要先 #include<stdlib.h> 然後在需要的時候輸入 system("color 0a");

就可以改變顏色了!簡單解釋一下,後面有兩個值,都採十六進位制。第一個值是控制文字顏色,第二個值是控制背景顏色。對應的顏色我就不講了,讓你自行摸索。

P.S : system("color 0F"); 是黑底白字,system("color F0"); 是白底白黑字,剩下的自行看著辦。


gotoxy(); 更改游標位置

有時候會想要有一些排版,就會不斷的 print 空白鍵,但每次這樣寫就覺得好麻煩又好蠢。程式碼被空白字元佔滿的感覺真的不好受,就算使用迴圈印也還是沒辦法逃離看起來亂糟糟的感覺。

這個時候就會希望可以獲得「游標位置主控權」,方法其實很簡單,程式碼如下方所示:

#include<windows.h>
void gotoxy(int xpos, int ypos)
{
  COORD scrn;
  HANDLE hOuput = GetStdHandle(STD_OUTPUT_HANDLE);
  scrn.X = xpos; scrn.Y = ypos;
  SetConsoleCursorPosition(hOuput,scrn);
}

想移動游標時只要呼叫 gotoxy(x,y); 就 OK 了。

x, y 值的計算方式是以命令提示字元視窗的左上角開始算:向右向下,值漸漸增加,細節就請自己試試看吧。


後記

有了上面那幾個函式,相信就可以大大的改善使用者介面了,更不用提程式碼會變得多整潔。如果想製作命令列小遊戲,有了上面那兩個函式也會變得很容易。

參考