0. 개요

콘솔 화면에서 게임을 만들기 위해서는 콘솔 화면에 원하는 위치에 대상을 그릴 수 있어야 합니다.

 

이를 위해 만들 기본적인 함수 중 하나가 이번에 소개할 gotoxy 함수입니다.

 

 

1. 동작

gotoxy 활용

gotoxy함수를 사용하여 위와 같은 연출을 낼 수 있습니다.

 

1. 프로그램이 시작되고 아무 키나 입력 받는다

2. HELLO!, NICE!를 두줄에 걸쳐 출력한다.

3. 화살표를 통하여 H를 소문자로 바꾼다

4. HELLO!를 지우고 :) 이모티콘을 출력한다.

 

아래에 코드를 살펴보면서 위의 네가지의 동작을 분석해보겠습니다.

 

3. 코드 및 분석

#include<iostream>
#include<windows.h> //gotoxy를 위한 헤더 
#include<conio.h>   //_getch()를 위한 헤더

using namespace std;

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

int main(void) {
	printf("Press Any Key...");
	_getch();//키 입력을 대기합니다.
    
    /* HELLO!, NICE! 문자열을 출력 */
	gotoxy(10, 10);
	printf("HELLO!\n");
    
	gotoxy(10, 11);
	printf("NICE!\n");
    
	Sleep(1000); // 잠시 쉬었다가..
	gotoxy(8, 10); // HELLO 앞에 화살표 출력
	printf("→");
    
	Sleep(1000); //잠시 쉬었다가..
	gotoxy(10, 10); // 소문자로 변경
	printf("h"); // 문자열 위에 출력하면 덮어쓰기가 됨을 확인 가능.
    
	Sleep(1000);
    /* 공백을 활용하여 문자를 지움 */
	for (int x = 15; x > 9; x--) {
		gotoxy(x, 10);
		printf(" ");
		Sleep(500);
	}
    
    /* :) 이모티콘 출력 */
	gotoxy(10, 10);
	printf(":");
	Sleep(500);
	printf(")");
	Sleep(1000);
	gotoxy(20,20);
}

 

* COORD 구조체

 : short x, short y를 구조체 멤버로 가진 좌표 구조체 입니다.

 

* SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);

 : 콘솔 마우스 커서의 위치를 조절하는 함수, 표준 출력 핸들을 통하여 x,y좌표를 가진 pos 구조체 위치로 이동합니다.

   표준 출력은 화면(콘솔)에 해당됩니다.

 

1. 프로그램이 시작되고 아무 키나 입력 받는다

-> _getch()를 활용하여 키 입력을 대기합니다.

-> _getch()는 입력받은 키의 값을 반환하는 함수입니다.

 

2. HELLO!, NICE!를 두줄에 걸쳐 출력한다.

-> gotoxy를 통하여 위치를 지정하여 출력합니다.

 

3. 화살표를 통하여 H를 소문자로 바꾼다

-> 출력된 화면 위에 출력한다면 교체된다.

 

4. HELLO!를 지우고 :) 이모티콘을 출력한다.

-> 연출의 방법 중 하나로 사용된다.

 

 

4. 정리

커서 이동 함수를 통하여 콘솔화면에 원하는 위치에 출력할 수 있는 gotoxy함수를 작성해 보았습니다.

또한 키의 입력을 대기 위하여 getch() 함수를 활용할 수 있는 것까지 확인했습니다.

+ Recent posts