2026-03-27 TIL (24일차)
2026-03-27 TIL (24일차)
팀 프로젝트
UI 구현
MainScene 리팩토링
InventoryScene 구현
BattleScene 데이터 연동
콘솔 출력 구현
원하는 위치로 이동: Console_gotoxy
1
2
3
4
5
6
7
void Console_gotoxy(int x , int y)
{
COORD pos;
pos.X = x;
pos.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE) , pos);
}
기능: 콘솔 창 내부의 커서(글자가 써지는 위치)를 지정한 (x, y) 좌표로 순간 이동시킵니다.
필요 이유: 이 함수가 없다면 글자를 출력할 때마다 화면이 밑으로 계속 내려갑니다(스크롤). 하지만 gotoxy를 사용하면 화면을 다 지우지 않고도 특정 위치의 글자만 덮어써서 업데이트할 수 있어, 체력바나 맵을 그릴 때 필수적입니다.
마우스 클릭 멈춤 방지
1
2
3
4
5
6
7
void DisableQuickEdit()
{
HANDLE hInput = GetStdHandle(STD_INPUT_HANDLE);
DWORD prev_mode;
GetConsoleMode(hInput , &prev_mode);
SetConsoleMode(hInput , prev_mode & ~ENABLE_QUICK_EDIT_MODE);
}
기능: 콘솔 창의 ‘빠른 편집 모드(Quick Edit Mode)’를 강제로 꺼버립니다.
필요 이유: 윈도우 콘솔 창은 기본적으로 마우스로 화면을 클릭하거나 드래그하면, 복사 대기 상태가 되면서 실행 중인 프로그램(게임 루프)이 완전히 일시 정지되어 버립니다. 유저가 실수로 화면을 클릭해서 게임이 멈추는 대참사를 막으려면 게임 시작 시 반드시 이 함수를 호출해야 합니다.
깜빡이는 커서 숨기기
1
2
3
4
5
6
7
void SetCursorVisible(bool isVisible)
{
CONSOLE_CURSOR_INFO cursorInfo;
GetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE) , &cursorInfo);
cursorInfo.bVisible = isVisible; // true면 보임, false면 숨김
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE) , &cursorInfo);
}
기능: 콘솔 화면에서 글자를 입력할 때 깜빡거리는 언더바(_) 모양의 커서를 숨기거나 다시 나타나게 합니다. false를 넣으면 숨겨집니다.
필요 이유: gotoxy를 이용해 화면을 아주 빠르게 다시 그릴 때(Render), 커서를 숨기지 않으면 화면 여기저기서 커서가 번쩍번쩍 깜빡거리는 시각적 테러(Flickering)가 발생합니다. 깔끔한 게임 화면을 위해 커서는 보통 렌더링 전에 숨겨둡니다.
This post is licensed under CC BY 4.0 by the author.