상단에서 바라보는 시점으로 하여서 이동하는 것에 대해서 예제를 꾸며 보았습니다.
이번에는 측면으로 이동하는 것에 대해서 만들어 봤습니다.
땅이나 낙사나 이런건 없지만 그냥 모양만....
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <Windows.h>
typedef struct {
int x;
int y;
char isJumping;
}Pos;
void Move(Pos*, int);
void Jump(Pos*);
void Fall(Pos*);
void KeyEvent(Pos*);
void PrintScreen(Pos*);
int main(void)
{
Pos pos;
pos.x = 0;
pos.y = 0;
pos.isJumping = 0;
while (1)
{
Fall(&pos);
KeyEvent(&pos);
PrintScreen(&pos);
Sleep(50);
}
}
/*
움직임을 담당하는 함수입니다.
pos : 포인터로 좌표 관련 구조체를 넘겨준다.
range : 이동할 거리를 넘겨준다.(좌, 우)
*/
void Move(Pos* pos, int range)
{
if (pos->x > 0 || range >= 0)
pos->x += range;
}
/*
점프 기능을 담당하는 함수 입니다.
pos : 현 캐릭터의 위치 구조체 포인터
*/
void Jump(Pos* pos)
{
if (pos->isJumping == 0)
{
pos->y+=5;
}
}
/*
키 이벤트 관련 처리를 하는 함수 입니다.
pos : 현 캐릭터의 위치 구조체 포인터
*/
void Fall(Pos* pos)
{
if (pos->y > 0)
{
pos->isJumping = 1;
pos->y--;
}
else
{
pos->isJumping = 0;
}
}
void KeyEvent(Pos *pos)
{
int input;
if (_kbhit())
{
input = _getch();
switch (input)
{
case 'A':
case 'a':
Move(pos, -1);
break;
case 'D':
case 'd':
Move(pos, 1);
break;
case 'W':
case 'w':
Jump(pos);
break;
}
}
}
/*
화면 출력 기능을 합니다.
pos : 현 캐릭터의 위치 구조체 포인터
*/
void PrintScreen(Pos *pos)
{
int i, j;
system("cls");
for (i = 0; i <= 30; i++)
{
if (pos->y == 30-i)
{
for (j = 0; j <= pos->x; j++)
printf(" ");
printf("@");
}
printf("\n");
}
printf("============================================================================================================");
}
위는 예제 파일 입니다.
실행해보시면 보잘 것 없습니다.
그리고 뭐 이런저런 것 없이 움직이는 것만 집중 했기에 조작감이나 보이는 모양새는 정말로 하찮습니다...
윈도우 헤더 파일을 가져온 이유는 Sleep 함수를 사용하기 위해서 포함시켰습니다.
'프로그래밍 > C' 카테고리의 다른 글
[C] 리눅스 환경에서 컴파일 (0) | 2016.08.09 |
---|---|
[C] 각종 자료형들 크기 알아보기 (0) | 2016.07.08 |
[C] 2차원 이동 예제(위에서 바라보는 시점) (0) | 2016.06.25 |
[C] 간단한 Up AND Down 게임 (0) | 2016.06.25 |
[C] 숫자 야구 게임 (1) | 2016.06.15 |