0. 개요
콘솔 화면에서 게임을 만들기 위해서는 콘솔 화면에 원하는 위치에 대상을 그릴 수 있어야 합니다.
이를 위해 만들 기본적인 함수 중 하나가 이번에 소개할 gotoxy 함수입니다.
1. 동작
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() 함수를 활용할 수 있는 것까지 확인했습니다.
'게임 프로젝트 > 기본기' 카테고리의 다른 글
gotoxy(), getch(), kbhit()을 이용간단한 게임만들기 (0) | 2021.07.19 |
---|---|
키값 확인 및 키가 입력되었는지 확인하기(getch(), kbbit()) (0) | 2021.06.28 |