명령프롬프트 제어 함수(system) - Windows.h


int __cdecl system(const char *_Command)

반환 값 int형이고 성공은 0, 실패는 -1을 리턴합니다.

명령 프롬프트(cmd)에 있는 명령어를 쓸 수 있다.

콘솔게임 만들 때 system함수에서 자주 쓰는 명령어들

(화면 전체 지우기, 콘솔 화면 크기 변경, 타이틀 변경 등이 있습니다.)

system("pause"); // 계속할려면 아무키나 누르시오.... 가 뜹니다. (아무키나 안눌르면 getch()같이 계속 입력을 기다림)
system("pause > NUL"); // 글자가 뜨지 않는 대신 효력은 system("pause");하고 같습니다.
system("cls"); // 화면 전체를 깨끗하게 지워주고 커서를 0,0으로 이동시킵니다.
system("C:\\test\run.exe") // C:\test에 위치한 run.exe파일을 실행합니다.
system("mode con: lines = number cols = number"); // 숫자만큼 콘솔창의 크기가 변경됩니다.
system("title Test");  // 도스창 타이틀(제목)을 Test으로 바꿔줍니다.
/* 명령어를 칠땐 소대문자를 상관하지 않습니다. */


콘솔에서 좌표 이동하는 방법(SetConsoleCursorPosition) Windows.h


BOOL _stdcall SetConsoleCursorPosition(HANDLE hConsoleOutput, COORE dwCursorPosition)

dwCursorPosition를 받아서 그 값에 따라 콘솔창 커서 이동을 시킬 수 있습니다. 이 함수를 이용하면 게임 만들 때 필요한 부분만 지우고(공백출력) 화면을 보여줄 수 있다.

void gotoxy(int x, int y)
{
     COORD XY = {x, y};
     SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), XY);
}


콘솔에서 깜박깜박거리는 커서를 보이지 않게 하기(CursorView) - Windows.h


void CursorView(char show)
{
     HANDLE hConsole;
     CONSOLE_CURSOR_INFO ConsoleCursor;

     hConsole = GetStdHandle(STD_OUTPUT_HANDLE);

     ConsoleCursor.bVisible = show;
     ConsoleCursor.dwSize = 1;

     SetConsoleCursorInfo(hConsole , &ConsoleCursor);
}


글자에 색깔 넣는 방법(SetConsoleTextAttribute) - Windows.h


BOOL __stdcall SetConsoleTextAttribute(HANDLE hConsoleOutput, WORD wAttributes)

WORD wAttributes에 지정된 값을 넣어 주면 글자색, 배경색이 바뀝니다. 아래와 같이 정의하여 사용할 수 있습니다. 콘솔창에 색상이 변합니다.

enum {
    BLACK, /* 0 : 검은색 */
    DARK_BLUE, /* 1 : 어두운 파랑 */
    DARK_GREEN, /* 2 : 어두운 초록 */
    DARK_SKY_BLUE, /* 3 : 어두운 하늘 */
    DARK_RED, /* 4 : 어두운 빨강 */
    DARK_VOILET, /* 5 : 어두운 보라 */
    DARK_YELLOW, /* 6 : 어두운 노랑 */
    GRAY, /* 7 : 회색 */
    DARK_GRAY, /* 8 : 어두운 회색 */
    BLUE, /* 9 : 파랑 */
    GREEN, /* 10 : 초록 */
    SKY_BLUE, /* 11 : 하늘 */
    RED, /* 12 : 빨강 */
    VIOLET, /* 13 : 보라 */
    YELLOW, /* 14 : 노랑 */
    WHITE, /* 15 : 하얀색 */
};
#define col GetStdHandle(STD_OUTPUT_HANDLE) // 함수정의
#define BCK SetConsoleTextAttribute( col,0x0000); // 검은색
#define WHITE SetConsoleTextAttribute( col,0x000f ); // 흰색
#define HIG SetConsoleTextAttribute( col, 0x000d); //형광
#define BW SetConsoleTextAttribute( col,0x00f0 ); // 검흰색
#define RED SetConsoleTextAttribute( col,0x000c ); //빨강
#define VIO SetConsoleTextAttribute( col,0x00f1 | 0x0008 |0x000c); //보라
#define YEL SetConsoleTextAttribute( col, 0x000e); //노란색
#define SKY SetConsoleTextAttribute( col, 0x000b); //하색
#define S SetConsoleTextAttribute( col, 0x0003); //옥색
#define GRAY SetConsoleTextAttribute( col,0x0008); // 회색
#define HIGH SetConsoleTextAttribute( col,0x00a); // 연두
#define DA SetConsoleTextAttribute( col,0x06a); // 색연두
#define WHITE1 SetConsoleTextAttribute( col,0x007); //흰색
#define BLUE SetConsoleTextAttribute( col,0x009); // 파랑
#define BRED SetConsoleTextAttribute( col,0x0cc); // 빨간색칠
#define BGRAY SetConsoleTextAttribute( col,0x080); // 회색
#define G SetConsoleTextAttribute( col,0x004); // 갈색
#define GREEN SetConsoleTextAttribute( col,0x002); // 녹색