저는 개인적으로 웹브라우저를 크롬을 사용합니다.
그래서 간혹 인터넷을 연결하지 않고 사이트를 접속하게 된다면
공룡 게임을 확인 할 수 있습니다.
그래서 저는 여태까지 배운 C언어로 이 공룡게임을 콘솔창에 출력해 볼라 합니다.
#define TreeHigh 19
#define DinoY 11
#define TreeDistance 80
#define CRT_SECURE_NO_WARNINGS
#define CLS system("cls")
#include <Stdio.h>
#include <windows.h>
#include <stdbool.h>
void SetConsoleView(); // 콘솔창 크기 조정하기
void gotoXY(int x, int y); // X좌표와 Y좌표 조정하기
void DinoSour(int Dinoleg); // 공룡그림 그리기
void Tree1(int TreePosition); // 첫번째 나무 모양 그리기
void Tree2(int TreePostin1); // 두번째 나무 모양 그리기
char KeyInput(); // 문자를 받는 함수
int DinolegsSwing = true; // 공룡의 다리 초깃값을 true로 놓고 함수에 대입
int main(void)
{
int TreeX2_Flag = 0; // 두번째 트리가 나오는 주기 설정
int DinosourHigh = DinoY; // 공룡의 높이를 11로 지정
int TreeX1 = TreeDistance; //첫번째 나무의 거리를 80으로 지정
int TreeX2 = TreeDistance; // 두번째 나무의 거리를 80으로 지정
int Jumping = false; // 처음 점프의 값을 false를 두고 시작
int Bottom = true; // 공룡이 바닥에 있어야만 점프를 뛸 수 있음
int JumpingLevel = false; // 점프의 최댓값에 다했다면 내려가기 위한 변수
SetConsoleView();
while (true)
{
if (KeyInput() == 'w'&&Bottom) //만약 w를 입력하고 공룡이 바닥에 위치한다면 점프 가능
{
Bottom = false; //점프를 한다면 bottom이 거짓으로 변한다.
Jumping = true;
}
if (Jumping)
{
DinosourHigh--;
}
if (DinosourHigh == 2) //만약 공룡이 일정 높이가 된다면 내려가야함 (공룡 높이의 한계)
{
JumpingLevel = true;
}
if (JumpingLevel)
{
DinosourHigh = DinoY; // 점프 높이를 DinoY(11)로 초기화
}
if (DinosourHigh == 11)
{
JumpingLevel = false;
Jumping = false;
Bottom = true;
}
TreeX1 -= 2;
if (TreeX1 <= 3)
{
TreeX1 = TreeDistance;
}
if (TreeX1 == 40)
{
TreeX2_Flag += 1;;
}
if (TreeX2_Flag == 1)
{
Tree2(TreeX2);
TreeX2 -= 2;
}
if (TreeX2 <= 3)
{
TreeX2 = TreeDistance;
TreeX2_Flag = 0;
}
Tree1(TreeX1);
DinoSour(DinosourHigh);
Sleep(100);
CLS;
}
}
void DinoSour(int DinoX)
{
gotoXY(0, DinoX);
{
printf(" $$$$$$$ \n");
printf(" $$ $$$$$ \n");
printf(" $$$$$$$$ \n");
printf("$ $$$ \n");
printf("$$ $$$$$$ \n");
printf("$$$ $$$$$ \n");
printf(" $$ $$$$$$$$$ \n");
printf(" $$$$$$$$$$$ \n");
printf(" $$$$$$$$$ \n");
printf(" $$$$$$$ \n");
if (DinolegsSwing)
{
printf(" $ $$$\n");
printf(" $$ ");
DinolegsSwing = false;
}
else
{
printf(" $$$ $ \n");
printf(" $$ ");
DinolegsSwing = true;
}
}
}
void SetConsoleView()
{
system("mode con cols=100 lines=25");
system("title Google DinoSour Game");
}
void gotoXY(int x, int y)
{
COORD pos;
pos.X = x;
pos.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
}
void Tree1(int TreePosition)
{
gotoXY(TreePosition, TreeHigh);
printf(" * ");
gotoXY(TreePosition, TreeHigh+1);
printf(" *** ");
gotoXY(TreePosition, TreeHigh+2);
printf("*****");
gotoXY(TreePosition, TreeHigh+3);
printf(" * ");
gotoXY(TreePosition, TreeHigh+4);
printf(" * ");
}
void Tree2(int TreePostin1)
{
gotoXY(TreePostin1, TreeHigh);
printf(" * ");
gotoXY(TreePostin1, TreeHigh + 1);
printf("*******");
gotoXY(TreePostin1, TreeHigh + 2);
printf(" *** ");
gotoXY(TreePostin1, TreeHigh+3);
printf(" *** ");
gotoXY(TreePostin1, TreeHigh + 4);
printf(" *** ");
}
char KeyInput()
{
if (kbhit()!=0)
{
return getch();
}
}
아직 충돌처리도 하지 않았고 처음 메뉴도 설정하지 않은 초기 단계입니다.
이 코드에서 충돌처리도 하고 메뉴도 만들어서 더욱 체계적인 프로그램을
만들어보고 싶습니다.
만들다 보니 상당히 재밌습니다...!!
'C언어' 카테고리의 다른 글
C언어 공룡게임 만들기 2 (0) | 2020.05.20 |
---|---|
C언어 동적 메모리 할당 (0) | 2020.05.12 |
C언어 파일 입출력 (0) | 2020.05.10 |
코드업 기초 100제 완성! (0) | 2020.05.09 |