키보드 방향키를 통해 움직이는 #을 만드는 방법
방향키를 통해 움직이는 #코드?
오늘은 사용자에게 방향키를 입력받아 움직이는 #을 만드는 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++코드를 알아봤습니다.
'IT > 기술(C,C++,JAVA)' 카테고리의 다른 글
c언어로 쉽게 만드는 합집합, 교집합, 차집합 간단 예제(코드포함) (3) | 2020.09.24 |
---|---|
Shell/Merge Sort(TopDown/BottomUp) 실행시간 비교(코드첨부) (0) | 2020.09.20 |
JAVA를 이용한 간단한 슬롯머신 게임 만들기 (0) | 2020.09.13 |
정말 쉬운 JAVA를 활용한 좌석 예약 프로그램 만들기 (3) | 2020.08.20 |
c를 활용한 원의 중심과 반지름을 통한 원그리기(넓이 구하기) (3) | 2020.08.18 |
댓글