[Util 클래스의 Class Diagram]


앞서 설명드린 프로그램 설계 부분을 토대로, 소스 코드 구현부를 자세히 설명드리겠습니다. 먼저, Util.h 와 Util.c 를 분석해 보겠습니다.


[Util.h]

#ifndef _UTIL_H
#define _UTIL_H

#define WINDOW_LINE_SIZE 9
#define WINDOW_COL_SIZE 66

enum FontColor{
	BLACK, BLUE, GREEN, JADE, RED, PURPLE, YELLOW, WHITE, GRAY,
	LIGHT_BLUE, LIGHT_GREEN, LIGHT_JADE, LIGHT_RED, LIGHT_PURPLE, LIGHT_YELLOW, LIGHT_WHITE
};

void CursorUtil_GotoXY(int x, int y);
void CursorUtil_Hide();
void WindowUtil_ChangeWindowSize(int lines, int cols);
void FontUtil_ChangeFontColor(int color);

#endif


1, 2, 17 라인

#ifndef ~ #define, #endif 문장은 헤더파일의 내용을 중복 포함되지 않게 하기 위해 사용합니다.


4 ~ 5 라인

원하는 콘솔창의 가로, 세로 크기를 상수로 정해 놓습니다. 즉, 가로 9 줄, 세로 66 칸으로 콘솔창을 바꿀 예정입니다.


7 ~ 10 라인

출력될 글자의 색에 대한 열거형 상수를 정의합니다. 검정색 (0) 부터 연한 흰색 (15) 까지 순차적으로 매핑합니다.


12 ~ 15 라인

Util 에 관련된 함수들의 선언부입니다.


[Util.c]

#include <Windows.h>
#include <stdio.h>
#include "Util.h"

#define COMMAND_SIZE 256

void CursorUtil_GotoXY(int x, int y){
	COORD pos = { x, y };
	SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
}

void CursorUtil_Hide(){
	CONSOLE_CURSOR_INFO cursorInfo = {0, };
	cursorInfo.dwSize = 1;
	cursorInfo.bVisible = FALSE;
	SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursorInfo);
}

void WindowUtil_ChangeWindowSize(int lines, int cols){
	char command[COMMAND_SIZE] = { '\0', };
	sprintf(command, "mode con: lines=%d cols=%d", lines, cols);
	system(command);
}

void FontUtil_ChangeFontColor(int color){
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color);
}


1 ~ 3 라인

Util.c 파일에서 필요한 헤더파일들을 포함시킵니다.


7 라인

CursorUtil_GotoXY 함수의 정의부입니다. 매개변수로 x 와 y 를 받아서 출력 커서를 (x, y) 위치로 이동합니다.


8 ~ 9 라인

SetConsoleCursorPosition 함수를 통해서 커서의 위치를 매개변수로 받은 x 와 y 좌표로 이동시킵니다.

(콘솔 커서 좌표 이동하기 참고)

http://kkikkodev.tistory.com/26


12 라인

CursorUtil_Hide 함수의 정의부입니다. 콘솔에서 커서를 숨겨서 깜빡임을 없앱니다.


13 ~ 16 라인

SetConsoleCursorInfo 함수를 통해서 커서를 숨깁니다.

(콘솔 커서 숨기기 & 두께 조절하기 참고)

http://kkikkodev.tistory.com/27


19 라인

WindowUtil_ChangeWindowSize 함수의 정의부입니다. 매개변수로 lines (콘솔의 행 수) 와 cols (콘솔의 열 수) 를 받아서, 콘솔창의 크기를 재설정합니다.


20 ~ 22 라인

매개변수로 받은 lines 와 cols 를 가지고 콘솔창의 크기를 변경합니다.

(콘솔 창 크기 변경하기 참고)

http://kkikkodev.tistory.com/28


25 라인

FontUtil_ChangeFontColor 함수의 정의부입니다. 매개변수로 color (바꿀 색상) 를 받아서, 글꼴 색상을 변경합니다.


25 ~ 27 라인

매개변수로 받은 색상을 가지고 콘솔창의 글자색을 변경합니다.

(콘솔 글자 색 변경하기 참고)

http://kkikkodev.tistory.com/29


by kkikkodev 2015. 4. 10. 15:46