#include<stdio.h>
#include<Windows.h>
#include<conio.h>
///////////////////////////////////////////////////////////////////////
/* 커서 설정 */
typedef enum { NOCURSOR, SOLIDCURSOR, NORMALCURSOR } CURSOR_TYPE;
void setcursortype(CURSOR_TYPE c) {
CONSOLE_CURSOR_INFO CurInfo;
switch (c)
{
case NOCURSOR:
CurInfo.dwSize = 1;
CurInfo.bVisible = FALSE;
break;
case SOLIDCURSOR:
CurInfo.dwSize = 100;
CurInfo.bVisible = TRUE;
break;
case NORMALCURSOR:
CurInfo.dwSize = 20;
CurInfo.bVisible = TRUE;
break;
default:
break;
}
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &CurInfo);
}
////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////
/* 커서의 움직임 구현 */
void gotoxy(int x, int y) {
COORD CursorPosition = { x, y };
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), CursorPosition);
}
/////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////
int main(void) {
setcursortype(NOCURSOR); // cursor 안보이게 설정
int x = 0, y = 0;
int key;
gotoxy(x, y);
printf("@");
while (1) {
key = _getch();
gotoxy(x, y);
printf(" ");
if (key == 224) {
key = _getch();
}
switch (key) {
case (int)'w': case 72:
if (y > 0) y--;
break;
case (int)'s': case 80:
if (y < 24) y++;
break;
case (int)'a': case 75:
if (x > 0) x--;
break;
case (int)'d': case 77:
if (x < 79) x++;
break;
}
gotoxy(x, y);
printf("@");
}
return 0;
}
/////////////////////////////////////////////////////////////////////////
주로 봐야할건 main 함수부분이다.
처음 cursor가 위치한 부분은 0, 0이고 커서를 0,0 으로 움직이고 해당 위치를 @ 로 나타낸다.
while 문을 사용하여 루프를 계속 돌며(Polling) key의 값이 들어오는지 확인하고 해당 key에 맞게 cursor를 옮긴다.
key값을 _getch() 함수를 사용해서 받아온다.
getch 함수는 conio.h에 있고 입력을 숫자로 반환하는 함수이다. getch()를 사용하면 에러가 뜨므로 앞에 언더바를 붙여서 사용하자.
키보드 입력을 받아서 switch를 이용해 wasd와 화살표로 상하좌우를 판단한다. 이때 화살표는 _getch를 두번 받아서 두번째 값을 사용한다. (F1 같은 펑션키도 마찬가지이다.)
반복문을 돌때마다 현재 있는 위치는 지우고 새로운 위치(입력이 없으면 현재위치)에 @를 작성한다
참고한 블로그
주로 첫번째 블로그를 따라하고있습니다.
C언어로 게임 만들기 1. 기초 & 플레이어 움직이기 (2) 플레이어 움직이기
C언어로 게임 만들기 1. 기초 & 플레이어 움직이기 (2) 플레이어 움직이기 반갑습니다. 이번 강의에서는 키를 눌러 플레이어를 움직이는 방법에 대해 설명하겠습니다. 플레이어를 움직이려면? 먼
lunarcat-repo.tistory.com
[C++ 게임] 콘솔 게임 관련 기본 함수들
안녕하세요. BlockDMask 입니다. C++ 게임 혹은 C언어로 만드는 간단한 콘솔게임에서 자주 쓰이는 함수들을 정리해봤습니다. 제 블로그 카테고리에 있는 콘솔 게임들에서 모두 아래의 함수들을 사
blockdmask.tistory.com
m.blog.naver.com/noksek0615/221555777873
[C/C++ 콘솔 강좌] 화살표 키 입력받기(_getch 2편)
저번 시간에 이어 화살표 키를 입력받아 보겠습니다.1. 왼쪽, 오른쪽 키화살표 키는 _getch문을 2번 실행...
blog.naver.com
'STUDY > C, C++' 카테고리의 다른 글
[C] scanf 개행 문자 처리 (0) | 2021.06.09 |
---|---|
[C/C++] 버블 정렬, 카운트 정렬 (0) | 2021.06.03 |
[C/C++] 숫자퍼즐게임 (0) | 2021.05.11 |
[C] C 프로그래밍 문법 (1) (0) | 2021.03.31 |
[C] 개발환경 구축 (2) | 2021.03.31 |