[C++] ConsoleColor / setColor() / 색 넣는 함수 / how to change color in cmd
2020. 6. 24. 13:13ㆍ🧑🏻💻/C & C++
비쥬얼 베이직으로 간단한 C언어 게임을 만드려고 하였고,
C언어 게임을 만들기 앞서 시각적인 효과를 주기 위해서 색상을 넣는 함수를 알아야 했습니다.
가장 먼저 생각난 것은 cmd 명령어인 system("color ~") 였고, 적용을 해본결과 콘솔창이 굉장히
느려지는 단점이 있었습니다.
여기 저기, 이것 저것 구글링 해본 결과 SetConsoleTextAttribute() 를 알게 되었고,
이에 대하여 정리하고 공유하고자 합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
#include <Windows.h>
#include <stdio.h>
enum ConsoleColor {
CC_BLACK,
CC_DARKBLUE,
CC_DARKGREEN,
CC_DARKCYAN,
CC_DARKRED,
CC_DARKMAGENTA,
CC_DARKYELLOW,
CC_GRAY,
CC_DARKGRAY,
CC_BLUE,
CC_GREEN,
CC_CYAN,
CC_RED,
CC_MAGENTA,
CC_YELLOW,
CC_WHITE,
CC_LIGHTGRAY = 7,
CC_ORIGINAL = 7,
CC_ORIGINALFONT = 7,
CC_ORIGINALBG = 0
};
//텍스트, 배경 색상 SET
void setColor(int color, int bgcolor)
{
color &= 0xf;
bgcolor &= 0xf;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
(bgcolor << 4) | color);
}
//폰트 색상 SET
void setFontColor(int color)
{
CONSOLE_SCREEN_BUFFER_INFO buff;
GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &buff);
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
(buff.wAttributes & 0xf0) | (color & 0xf));
}
//배경 색상 SET
void setBgColor(int bgcolor) {
CONSOLE_SCREEN_BUFFER_INFO buff;
GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &buff);
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
((bgcolor & 0xf) << 4) | (buff.wAttributes & 0xf));
}
//텍스트 색상 GET
int getFontColor() {
CONSOLE_SCREEN_BUFFER_INFO buff;
GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &buff);
return buff.wAttributes & 0xf;
}
//배경 색상 GET
int getBgColor() {
CONSOLE_SCREEN_BUFFER_INFO buff;
GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &buff);
return (buff.wAttributes & 0xf0) >> 4;
}
//텍스트 색상 Default
__inline void initFontColor() {
setFontColor(7);
}
//배경 색상 Default
__inline void initBgColor() {
setBgColor(0);
}
//텍스트, 배경색 Default
__inline void initColor() {
setColor(7, 0);
}
void main()
{
int i, j;
printf("\r\n");
printf(" 0 1 2 3 4 5 6 7 8 9101112131415\n");
for (j = 0; j < 16; j++) {
initColor();
printf(" %2d", j);
setBgColor(j);
for (i = 0; i < 16; i++) {
setFontColor(i);
printf("♥");
}
printf("\n");
}
initColor();
}
|
cs |
How to change color in cmd game(console game)
색 변경으로 제작한 간단한 게임 >
'🧑🏻💻 > C & C++' 카테고리의 다른 글
[C] 2차원 배열 malloc / free / 메모리 할당과 해제 (0) | 2020.07.10 |
---|---|
[C / C++] Jumping Cat / C 게임 / C++ 게임 / C언어 게임 / 고양이 게임 만들기 (0) | 2020.06.24 |
[C++] C++ (0) | 2020.06.24 |
[C] system()함수 / cmd 명령어 / 명령 프롬프트 / 명령 줄 인터프리터 (0) | 2020.06.23 |
[C] C언어/ C언어 표준 (0) | 2020.06.18 |