본문 바로가기
IT/기술(C,C++,JAVA)

c언어를 활용한 방향키(키보드)로 움직이는 #을 만드는 방법

by ghostzoominn 2020. 8. 17.

키보드 방향키를 통해 움직이는 #을 만드는 방법

 

방향키를 통해 움직이는 #코드?

오늘은 사용자에게 방향키를 입력받아 움직이는 #을 만드는 c++코드에대해 알아보겠습니다.

 

흔히들 말하는 지렁이게임, 스네이크게임, 테트리스 등 게임을 만들때 필수적으로 필요한 코드입니다.

 

대부분의 게임 및 프로그램은 사용자의 입력을 받아서 화면의 대상을 움직이기때문에 꼭 필요한 코드입니다.

 

소스코드를 어디에 만들고 붙혀넣어야 할까?

우선은 해당 코드를 붙혀넣어 실행 할 위치를 알아야합니다.

(해당 프로그램은 visual studio 2019버전으로 작성되었습니다.)

소스코드 위치

위의 화면처럼 .cpp 코드는 소스파일에 추가를 하고, .h파일은 해더 파일에 추가를 합니다.

 

cpp코드는 어떻게 이루어져 있을까?

아래는 move.cpp코드입니다.

#include <iostream> 
#include "Turboc.h" 
#define LEFT 75 
#define RIGHT 77 
#define UP 80 
#define DOWN 72 

void main() 
{ 
int key; 
int x = 0, y = 0; 
char s = '#';  // 해당 문자를 바꿔서 다양한 모양의 움직이는 물체를 만들 수 있다

clrscr(); 
gotoxy(x, y); 
printf("%c", s); 

while (1) 
{ 
key = _getch(); 
if (key == RIGHT) 
{ 
clrscr(); 
x = x + 1; 
gotoxy(x, y); 
printf("%c", s); 

} 
else if (key == LEFT) 
{ 
clrscr(); 
x = x - 1; 
gotoxy(x, y); 
printf("%c", s); 
} 
else if (key == UP) 
{ 
clrscr(); 
y = y + 1; 
gotoxy(x, y); 
printf("%c", s); 
} 
else if (key == DOWN) 
{ 
clrscr(); 
y = y - 1; 
gotoxy(x, y); 
printf("%c", s); 
} 
else if (key == 'q' || key == 'Q') 
break; 
else if (key == ' ') 
{ 
clrscr(); 
x = 0; 
y = 0; 
} 
} 
}

 

헤더 코드는 어떻게 이루어져 있을까?

아래는 Turboc.h 헤더코드입니다.

#ifndef TURBOC_HEADER 
#define TURBOC_HEADER 

#include <stdio.h> 
#include <stdlib.h> 
#include <conio.h> 
#include <time.h> 
#include <windows.h>

typedef enum { NOCURSOR, SOLIDCURSOR, NORMALCURSOR } CURSOR_TYPE; 
void clrscr(); 
void gotoxy(int x, int y); 
int wherex(); 
int wherey(); 
void setcursortype(CURSOR_TYPE c); 

#define delay(n) Sleep(n) // n/1000초만큼 시간 지연 
#define randomize() srand((unsigned)time(NULL)) // 난수 발생기 초기화 
#define random(n) (rand() % (n)) //0~n까지의 난수 발생 

// 이 매크로가 정의되어 있으면 함수의 원형만 선언하고 정의는 하지 않는다. 
#ifndef TURBOC_PROTOTYPE_ONLY 

// 화면을 모두 지운다. 
void clrscr() 
{ 
system("cls"); 
}

// 커서를 x,y좌표로 이동시킨다. 
void gotoxy(int x, int y) 
{ 
COORD Cur; 
Cur.X=x; 
Cur.Y=y; 
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),Cur); 
} 

// 커서의 x 좌표를 조사한다. 
int wherex() 
{ 
CONSOLE_SCREEN_BUFFER_INFO BufInfo; 

GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE),&BufInfo); 
return BufInfo.dwCursorPosition.X; 
} 

// 커서의 y좌표를 조사한다. 
int wherey() 
{ 
CONSOLE_SCREEN_BUFFER_INFO BufInfo; 

GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE),&BufInfo); 
return BufInfo.dwCursorPosition.Y; 
}

// 커서를 숨기거나 다시 표시한다. 
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;

}

SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&CurInfo);

}



#endif // TURBOC_PROTOTYPE_ONLY 
#endif // TURBOC_HEADER

 

방향키로 움직이는 물체 구현하기 실행 화면

방향키로 움직이는 물체 구현한 출력 화면

위의 코드대로 실행하게되면 #이라는 글자가 사용자의 방향키의 입력대로 움직이게 됩니다.

 

이를 활용하여 다양한 프로그램 및 게임에 활용 할 수 있습니다.

 

오늘은 이처럼 사용자의 입력값을 바탕으로 움직이는 물체를 구현하는 C++코드를 알아봤습니다.

 

 

move.cpp
0.00MB
Turboc.h
0.00MB

댓글