C언어 공룡게임 만들기
C언어

C언어 공룡게임 만들기

저는 개인적으로 웹브라우저를 크롬을 사용합니다.

 

그래서 간혹 인터넷을 연결하지 않고 사이트를 접속하게 된다면

 

공룡 게임을 확인 할 수 있습니다.

 

그래서 저는 여태까지 배운 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