Chắc hẳn, khi mới bắt đầu vào ngành lập trình, chúng ta đều đã quen thuộc với cái giao diện console màn đen chữ trắng đến phát chán. Trong bài viết này, mình sẽ đưa ra những cách để thay đổi màu chữ hiển thị trên console, qua đó… giúp màn hình console trở nên sinh động hơn. Lưu ý, những hướng dẫn bên dưới chỉ hoạt động khi bạn lập trình trên môi trường Windows.

Trước tiên, chúng ta hãy tìm hiểu về màu mà console có thể thay đổi:

Giá trị (mã màu)Tên màu
0BLACK
1BLUE
2GREEN
3AQUA
4RED
5PURPLE
6YELLOW
7WHITE
8GRAY
9LIGHT BLUE
10 (A)LIGHT GREEN
11 (B)LIGHT AQUA
12 (C)LIGHT RED
13 (D)LIGHT PURPLE
14 (E)LIGHT YELLOW
15 (F)BRIGHT WHITE

Chúng ta có thể xem các mã màu này bằng cách bật cmd (Command Prompt) và gõ

color [ký tự bất kỳ (không trùng với giá trị )]

Chẳng hạn: color * hoặc color /?

Để đổi màu cmd, ta gõ như sau:

color [giá trị của màu]

Giờ hãy bắt đầu với cách đơn giản nhất

int system(const char *command);

Hàm int system(const char *command) gửi chuỗi lệnh hoặc tên chương trình được chỉ định bởi command đến trình xử lý lệnh (Command Processor) của hệ điều hành để thực thi (trên Windows sẽ là cmd.exe). Hàm này tạo một tiến trình con để chạy lệnh và tạm dừng tiến trình hiện tại cho đến khi lệnh hoàn tất, sau đó trả về mã thoát của lệnh hoặc giá trị báo lỗi nếu không thể thực thi lệnh. Để dùng được hàm này cần include <stdlib.h>.

Đây là ví dụ:

Tuy nhiên, cách này có một nhược điểm đó là khi ta gọi hàm này thì toàn bộ chữ trên console sẽ bị thay đổi. Ví dụ: ban đầu có console chữ màu trắng (mặc định), khi gọi hàm system(“color 4”) thì toàn bộ chữ sẽ đổi sang màu đỏ, sau đó tiếp tục gọi hàm system(“color 6”) thì toàn bộ chữ sẽ lại đổi sang màu vàng.

Cách đổi màu thứ 2

Đây là cách mình hay dùng nhất, còn lý do vì sao thì các bạn xem tiếp sẽ rõ.

Với cách thứ 2 này, chúng ta có thể đổi màu rất linh hoạt, thay đổi được màu của từng kí tự cụ thể chứ không phải thay đổi màu toàn bộ chữ có trong console như cách 1.

void SET_COLOR(int color)
{
	WORD wColor;
     

     HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
     CONSOLE_SCREEN_BUFFER_INFO csbi;
     if(GetConsoleScreenBufferInfo(hStdOut, &csbi))
     {
          wColor = (csbi.wAttributes & 0xF0) + (color & 0x0F);
          SetConsoleTextAttribute(hStdOut, wColor);
     }
}

Lưu ý: Để có thể xây dựng được hàm này cần phải #include <Windows.h>

Lời kết

Như vậy là mình đã trình bày xong những cách để có thể đổi Console trong lập trình C/C++. Cảm ơn bạn đã dành thời gian đọc bài viết!

Categorized in: