snake__game.exe
다운로드

 

msvcr120d.dll
다운로드

5일차

 

 

최종 코드 수정

 

더보기

#include <stdio.h>

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


int score=0; //-> 전역 변수로 설정

 

#define  UP  72
#define  LEFT 75
#define  RIGHT 77
#define  DOWN 80

 

#define  SUP 119;
#define  SLEFT 97;
#define  SDOWN 115;
#define  SRIGHT 100;

 

#define  ENTER 13


typedef enum { NOCURSOR, SOLIDCURSOR, NORMALCURSOR } CURSOR_TYPE;

 

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);
}

 

void textcolor(int color_number) //텍스트 칼라를 바꿔주는 함수
{
 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color_number);
}

 

void gotoxy(int x, int y)
{
 COORD pos = { x, y };
 SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);

}

 

void printmap()
{
 system("mode con: cols=81 lines=41");
 int i;
 system("cls");
 printf("■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■\n");
 for (i = 1; i<39; i++)
 {
  printf("■                                                                            ■\n");
 }
 printf("■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■");
}

 

void play()
{
 int direction = UP;
 int Y = 19;
 int X = 70;
 int TX = 70;
 int TY = 19;
 int Fheight, Fwidth;
 int eat = 0;
 int SnakeNStar[40][40] = { 0 };
 int UDRL[40][40] = { 0 };

 SnakeNStar[Y][X / 2] = 1;
 gotoxy(X, Y);
 textcolor(12);
 printf("■");

 while (1)
 {
  if (eat == 0)
  {
   srand((unsigned)time(NULL));
   Fheight = rand() % 38 + 1;
   Fwidth = (rand() % 38 + 1) * 2;
   SnakeNStar[Fheight][Fwidth / 2] = 2;
   gotoxy(Fwidth, Fheight);
   textcolor(14);
   printf("★");
   eat++;
  }
  fflush(stdin);
  if (_kbhit())
  {
   do
   {
    direction = _getch();
   } while (direction == 224);
  }


  if (direction == UP)
  {
   UDRL[Y][X / 2] = direction;
   if (SnakeNStar[Y - 1][X / 2] == 2)         // 만약 다음에 움직일 칸이 먹이라면
   {
    //SnakeNStar[Y][X / 2] = 0;            // 일단 현재칸을 0으로 만들고
    //gotoxy(X, Y);                     // 커서를 현재칸에 옮긴 뒤
    //printf("  ");                             // 공백을 채워준다.
    SnakeNStar[--Y][X / 2] = 1;         // 그리고 움직일 칸에 이동해서 1
    gotoxy(X, Y);                     // 커서를 움직일 칸에 이동 후
    textcolor(12);
    printf("■");                     // Snake를 그려줌
    Fheight = rand() % 38 + 1;               // 세로 랜덤값을 만들고
    Fwidth = (rand() % 38 + 1) * 2;            // 가로 랜덤값을 만듬
    score++;

    while (1)                        // 먹이가 생성될 때 까지 무한반복
    {
     if (SnakeNStar[Fheight][Fwidth / 2] != 1)   // 먹이가 생성될 자리가 공백이면
     {
      SnakeNStar[Fheight][Fwidth / 2] = 2;      // 먹이값을 채워준다.
      gotoxy(Fwidth, Fheight);               // 먹이 포인터를 이동한 후
      textcolor(14);
      printf("★");               // 먹이를 그림
      break;
     }
     else                                // 먹이가 생성될 자리가 공백이 아니면
     {
      Fheight = rand() % 38 + 1;         // 랜덤함수를 계속 돌린다.
      Fwidth = (rand() % 38 + 1) * 2;
     }
    }
   }
   else if (SnakeNStar[Y - 1][X / 2] == 1)      // 내 몸에 부딫히면 뒤짐
   {
    system("cls");
    return;
   }
   else                              // 다음에 움직이는 칸이 공백이면
   {
    if (Y == 1)                        // 뒤지는 거
    {
     system("cls");
     return;
    }

    SnakeNStar[TY][TX / 2] = 0;            // 현재칸을 공백값으로 만들고
    gotoxy(TX, TY);                     // 커서를 꼬리칸으로 이동
    printf("  ");                     // 공백을 채워줌


    if (UDRL[TY][TX / 2] == UP)
    {
     TY--;
    }
    else if (UDRL[TY][TX / 2] == DOWN)
    {
     TY++;
    }
    else if (UDRL[TY][TX / 2] == RIGHT)
    {
     TX += 2;
    }
    else if (UDRL[TY][TX / 2] == LEFT)
    {
     TX -= 2;
    }
    
    SnakeNStar[--Y][X / 2] = 1;            // 다음에 움직이는 칸에 뱀값을 집어넣고
    gotoxy(X, Y);                         // 커서를 다음칸으로 이동
    textcolor(12);
    printf("■");                                 // 뱀을 그려준다.


   }
  }

  else if (direction == DOWN)
  {
   UDRL[Y][X / 2] = direction;
   if (SnakeNStar[Y + 1][X / 2] == 2)
   {
    //SnakeNStar[Y][X / 2] = 0;
    //gotoxy(X, Y);
    //printf("  ");
    SnakeNStar[++Y][X / 2] = 0;
    gotoxy(X, Y);
    textcolor(12);
    printf("■");
    Fheight = rand() % 38 + 1;
    Fwidth = (rand() % 38 + 1) * 2;
    score 

while (1)
    {
     if (SnakeNStar[Fheight][Fwidth / 2] != 1)
     {
      SnakeNStar[Fheight][Fwidth / 2] = 2;
      gotoxy(Fwidth, Fheight);
      textcolor(14);
      printf("★");
      break;
     }
     else
     {
      Fheight = rand() % 38 + 1;
      Fwidth = (rand() % 38 + 1) * 2;
     }
    }
   }
   else if (SnakeNStar[Y + 1][X / 2] == 1)
   {
    system("cls");
    return;
   }
   else
   {
    if (Y == 38)
    {
     system("cls");
     return;
    }
    SnakeNStar[TY][TX / 2] = 0;            // 현재칸을 공백값으로 만들고
   gotoxy(TX, TY);                               // 커서를 현재칸으로 이동
    printf("  ");                                     // 공백을 채워줌


    if (UDRL[TY][TX / 2] == UP)
    {
     TY--;
    }
    else if (UDRL[TY][TX / 2] == DOWN)
    {
     TY++;
    }
    else if (UDRL[TY][TX / 2] == RIGHT)
    {
     TX += 2;
    }
    else if (UDRL[TY][TX / 2] == LEFT)
    {
     TX -= 2;
    }

    SnakeNStar[++Y][X / 2] = 1;
    gotoxy(X, Y);
    textcolor(12);
    printf("■");

   }
  }

  else if (direction == LEFT)
  {
   UDRL[Y][X / 2] = direction;
   if (SnakeNStar[Y][(X - 2) / 2] == 2)
   {
    //SnakeNStar[Y][X / 2] = 0;
    //gotoxy(X, Y);
    //printf("  ");
    SnakeNStar[Y][(X -= 2) / 2] = 1;
    gotoxy(X, Y);
    textcolor(12);
    printf("■");
    Fheight = rand() % 38 + 1;
    Fwidth = (rand() % 38 + 1) * 2;
    score++;

    while (1)
    {
     if (SnakeNStar[Fheight][Fwidth / 2] != 1)
     {
      SnakeNStar[Fheight][Fwidth / 2] = 2;
      gotoxy(Fwidth, Fheight);
      textcolor(14);
      printf("★");
      break;
     }
     else
     {
      Fheight = rand() % 38 + 1;
      Fwidth = (rand() % 38 + 1) * 2;
     }
    }
   }
   else if (SnakeNStar[Y][(X - 2) / 2] == 1)
   {
    system("cls");
    return;
   }
   else
   {
    if (X == 2)
    {
     system("cls");
     return;
    }
    SnakeNStar[TY][TX / 2] = 0;            // 현재칸을 공백값으로 만들고
    gotoxy(TX, TY);                               // 커서를 현재칸으로 이동
    printf("  ");                                      // 공백을 채워줌


    if (UDRL[TY][TX / 2] == UP)
    {
     TY--;
    }
    else if (UDRL[TY][TX / 2] == DOWN)
    {
     TY++;
    }
    else if (UDRL[TY][TX / 2] == RIGHT)
    {
     TX += 2;
    }
    else if (UDRL[TY][TX / 2] == LEFT)
    {
     TX -= 2;
    }
    SnakeNStar[Y][(X -= 2) / 2] = 1;
    gotoxy(X, Y);
    textcolor(12);
    printf("■");
   }
  }

  if (direction == RIGHT)
  {
   UDRL[Y][X / 2] = direction;
   if (SnakeNStar[Y][(X + 2) / 2] == 2)
   {
    //SnakeNStar[Y][X / 2] = 0;
    //gotoxy(X, Y);
    //printf("  ");
    SnakeNStar[Y][(X += 2) / 2] = 1;
    gotoxy(X, Y);
    textcolor(12);
    printf("■");
    Fheight = rand() % 38 + 1;
    Fwidth = (rand() % 38 + 1) * 2;
    score++;

    while (1)
    {
     if (SnakeNStar[Fheight][Fwidth / 2] != 1)
     {
      SnakeNStar[Fheight][Fwidth / 2] = 2;
      gotoxy(Fwidth, Fheight);
      textcolor(14);
      printf("★");
      break;
     }
     else
     {
      Fheight = rand() % 38 + 1;
      Fwidth = (rand() % 38 + 1) * 2;
     }
    }
   }
   else if (SnakeNStar[Y][(X + 2) / 2] == 1)
   {
    system("cls");
    return;
   }
   else
   {
    if (X == 76)
    {
     system("cls");
     return;
    }
    SnakeNStar[TY][TX / 2] = 0;            // 현재칸을 공백값으로 만들고
    gotoxy(TX, TY);                               // 커서를 현재칸으로 이동
    printf("  ");                                      // 공백을 채워줌


    if (UDRL[TY][TX / 2] == UP)
    {
     TY--;
    }
    else if (UDRL[TY][TX / 2] == DOWN)
    {
     TY++;
    }
    else if (UDRL[TY][TX / 2] == RIGHT)
    {
     TX += 2;
    }
    else if (UDRL[TY][TX / 2] == LEFT)
    {
     TX -= 2;
    }
    SnakeNStar[Y][(X += 2) / 2] = 1;
    gotoxy(X, Y);
    textcolor(12);
    printf("■");
   }
  }

  Sleep(90);
 }
}

/*void makestar()
{

}*/

int interface01()
{
 system("mode con: cols=150 lines=41");
 int updown = 1;
 int x = 10, y = 5;
 gotoxy(x, y);

 system("cls");
 fflush(stdin);

 system("color 0b"); //색 변경
 int i;
 system("cls");
 printf("■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■");
 for (i = 1; i<39; i++)
 {
  printf("■                                                                                                                                                  ■");
 }
 printf("■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■");
 // 맵
 textcolor(15);
 gotoxy(70, 10);
 printf(" SNAKE GAME\n");
 gotoxy(73, 13);
 printf(" MEUN\n");
 gotoxy(70, 16);
 printf(" GAME START \n");
 gotoxy(73, 17);
 printf("1인용");
 gotoxy(73, 18);
 printf("2인용(미완성)");
 gotoxy(73, 19);
 printf(" EXIT \n");
 gotoxy(65, 17);
 printf("▶");
 // 게임 시작 화면 인터페이스
 while (1)
 {
  switch (_getch())
  {
  case UP:
   gotoxy(65, 16 + updown);
   printf("  ");
   if (updown > 1)
   {
    updown--;
   }
   gotoxy(65, 16 + updown);
   printf("▶");
   break;
  case DOWN:
   gotoxy(65, 16 + updown);
   printf("  ");
   if (updown < 3)
   {
    updown++;
   }
   gotoxy(65, 16 + updown);
   printf("▶");
   break;
   //  game start , exit 선택
  case ENTER:
   if (updown == 1)
   {
    system("cls");
    return 1;
   }
   else if (updown == 2)
   {
    system("cls");
    return 2;
   }
   else
   {
    system("cls");
    gotoxy(70, 18);
    printf("안녕히가세요\n");
    Sleep(1000);
    exit(0);

   }

   //게임시작
  }
 }
}
void play2()
{
 /////////////////////////////////////////////////////////////1p
 int direction = UP;
 int Y = 19;
 int X = 70;
 int TX = 70;
 int TY = 19;
 int Fheight, Fwidth;
 int eat = 0;
 int SnakeNStar[40][40] = { 0 };
 int UDRL[40][40] = { 0 };

 SnakeNStar[Y][X / 2] = 1;
 gotoxy(X, Y);
 textcolor(12);
 printf("■");

 while (1)
 {
  if (eat == 0)
  {
   srand((unsigned)time(NULL));
   Fheight = rand() % 38 + 1;
   Fwidth = (rand() % 38 + 1) * 2;
   SnakeNStar[Fheight][Fwidth / 2] = 2;
   gotoxy(Fwidth, Fheight);
   textcolor(14);
   printf("★");
   eat++;
  }
  fflush(stdin);
  if (_kbhit())
  {
   do
   {
    direction = _getch();
   } while (direction == 224);
  }


  if (direction == UP)
  {
   UDRL[Y][X / 2] = direction;
   if (SnakeNStar[Y - 1][X / 2] == 2)         // 만약 다음에 움직일 칸이 먹이라면
   {
    //SnakeNStar[Y][X / 2] = 0;              // 일단 현재칸을 0으로 만들고
    //gotoxy(X, Y);                                 // 커서를 현재칸에 옮긴 뒤
    //printf("  ");                                    // 공백을 채워준다.
    SnakeNStar[--Y][X / 2] = 1;              // 그리고 움직일 칸에 이동해서 1
    gotoxy(X, Y);                                   // 커서를 움직일 칸에 이동 후
    textcolor(12);
    printf("■");                                      // Snake를 그려줌
    Fheight = rand() % 38 + 1;                 // 세로 랜덤값을 만들고
    Fwidth = (rand() % 38 + 1) * 2;          // 가로 랜덤값을 만듬

    while (1)                                        // 먹이가 생성될 때 까지 무한반복
    {
     if (SnakeNStar[Fheight][Fwidth / 2] != 1)   // 먹이가 생성될 자리가 공백이면
     {
      SnakeNStar[Fheight][Fwidth / 2] = 2;      // 먹이값을 채워준다.
      gotoxy(Fwidth, Fheight);               // 먹이 포인터를 이동한 후
      textcolor(14);
      printf("★");               // 먹이를 그림
      break;
     }
     else                                // 먹이가 생성될 자리가 공백이 아니면
     {
      Fheight = rand() % 38 + 1;         // 랜덤함수를 계속 돌린다.
      Fwidth = (rand() % 38 + 1) * 2;
     }
    }
   }
   else                              // 다음에 움직이는 칸이 공백이면
   {
    if (Y == 1)                        // 죽는 것
    {
     system("cls");
     return;
    }

    //SnakeNStar[Y][X / 2] = 1;             // 현재칸을 공백값으로 만들고
    gotoxy(TX, TY);                               // 커서를 꼬리칸으로 이동
    printf("  ");                                      // 공백을 채워줌


    if (UDRL[TY][TX / 2] == UP)
    {
     TY--;
    }
    else if (UDRL[TY][TX / 2] == DOWN)
    {
     TY++;
    }
    else if (UDRL[TY][TX / 2] == RIGHT)
    {
     TX += 2;
    }
    else if (UDRL[TY][TX / 2] == LEFT)
    {
     TX -= 2;
    }

    SnakeNStar[--Y][X / 2] = 1;            // 다음에 움직이는 칸에 뱀값을 집어넣고
    gotoxy(X, Y);                                  // 커서를 다음칸으로 이동
    textcolor(12);
    printf("■");                                     // 뱀을 그려준다.


   }
  }

  else if (direction == DOWN)
  {
   UDRL[Y][X / 2] = direction;
   if (SnakeNStar[Y + 1][X / 2] == 2)
   {
    //SnakeNStar[Y][X / 2] = 0;
    //gotoxy(X, Y);
    //printf("  ");
    SnakeNStar[++Y][X / 2] = 0;
    gotoxy(X, Y);
    textcolor(12);
    printf("■");
    Fheight = rand() % 38 + 1;
    Fwidth = (rand() % 38 + 1) * 2;

    while (1)
    {
     if (SnakeNStar[Fheight][Fwidth / 2] != 1)
     {
      SnakeNStar[Fheight][Fwidth / 2] = 2;
      gotoxy(Fwidth, Fheight);
      textcolor(14);
      printf("★");
      break;
     }
     else
     {
      Fheight = rand() % 38 + 1;
      Fwidth = (rand() % 38 + 1) * 2;
     }
    }
   }
   else
   {
    if (Y == 38)
    {
     system("cls");
     return;
    }
    //SnakeNStar[Y][X / 2] = 0;             // 현재칸을 공백값으로 만들고
    gotoxy(TX, TY);                               // 커서를 현재칸으로 이동
    printf("  ");                                      // 공백을 채워줌


    if (UDRL[TY][TX / 2] == UP)
    {
     TY--;
    }
    else if (UDRL[TY][TX / 2] == DOWN)
    {
     TY++;
    }
    else if (UDRL[TY][TX / 2] == RIGHT)
    {
     TX += 2;
    }
    else if (UDRL[TY][TX / 2] == LEFT)
    {
     TX -= 2;
    }

    SnakeNStar[++Y][X / 2] = 1;
    gotoxy(X, Y);
    textcolor(12);
    printf("■");

   }
  }

  else if (direction == LEFT)
  {
   UDRL[Y][X / 2] = direction;
   if (SnakeNStar[Y][(X - 2) / 2] == 2)
   {
    //SnakeNStar[Y][X / 2] = 0;
    //gotoxy(X, Y);
    //printf("  ");
    SnakeNStar[Y][(X -= 2) / 2] = 1;
    gotoxy(X, Y);
    textcolor(12);
    printf("■");
    Fheight = rand() % 38 + 1;
    Fwidth = (rand() % 38 + 1) * 2;

    while (1)
    {
     if (SnakeNStar[Fheight][Fwidth / 2] != 1)
     {
      SnakeNStar[Fheight][Fwidth / 2] = 2;
      gotoxy(Fwidth, Fheight);
      textcolor(14);
      printf("★");
      break;
     }
     else
     {
      Fheight = rand() % 38 + 1;
      Fwidth = (rand() % 38 + 1) * 2;
     }
    }
   }
   else
   {
    if (X == 2)
    {
     system("cls");
     return;
    }
    //SnakeNStar[Y][X / 2] = 0;             // 현재칸을 공백값으로 만들고
    gotoxy(TX, TY);                               // 커서를 현재칸으로 이동
    printf("  ");                                      // 공백을 채워줌


    if (UDRL[TY][TX / 2] == UP)
    {
     TY--;
    }
    else if (UDRL[TY][TX / 2] == DOWN)
    {
     TY++;
    }
    else if (UDRL[TY][TX / 2] == RIGHT)
    {
     TX += 2;
    }
    else if (UDRL[TY][TX / 2] == LEFT)
    {
     TX -= 2;
    }
    SnakeNStar[Y][(X -= 2) / 2] = 1;
    gotoxy(X, Y);
    textcolor(12);
    printf("■");
   }
  }

  if (direction == RIGHT)
  {
   UDRL[Y][X / 2] = direction;
   if (SnakeNStar[Y][(X + 2) / 2] == 2)
   {
    //SnakeNStar[Y][X / 2] = 0;
    //gotoxy(X, Y);
    //printf("  ");
    SnakeNStar[Y][(X += 2) / 2] = 1;
    gotoxy(X, Y);
    textcolor(12);
    printf("■");
    Fheight = rand() % 38 + 1;
    Fwidth = (rand() % 38 + 1) * 2;

    while (1)
    {
     if (SnakeNStar[Fheight][Fwidth / 2] != 1)
     {
      SnakeNStar[Fheight][Fwidth / 2] = 2;
      gotoxy(Fwidth, Fheight);
      textcolor(14);
      printf("★");
      break;
     }
     else
     {
      Fheight = rand() % 38 + 1;
      Fwidth = (rand() % 38 + 1) * 2;
     }
    }
   }
   else
   {
    if (X == 146)
    {
     system("cls");
     return;
    }
    //SnakeNStar[Y][X / 2] = 0;            // 현재칸을 공백값으로 만들고
    gotoxy(TX, TY);                              // 커서를 현재칸으로 이동
    printf("  ");                                     // 공백을 채워줌


    if (UDRL[TY][TX / 2] == UP)
    {
     TY--;
    }
    else if (UDRL[TY][TX / 2] == DOWN)
    {
     TY++;
    }
    else if (UDRL[TY][TX / 2] == RIGHT)
    {
     TX += 2;
    }
    else if (UDRL[TY][TX / 2] == LEFT)
    {
     TX -= 2;
    }
    SnakeNStar[Y][(X += 2) / 2] = 1;
    gotoxy(X, Y);
    textcolor(12);
    printf("■");
   }
  }


  Sleep(90);
 }
 //////////////////////////////////////////////////////////2p

}
void printmap2()
{
 system("mode con: cols=150 lines=41");
 int i;
 system("cls");
 printf("■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■");
 for (i = 1; i<39; i++)
 {
  printf("■                                                                                                                                                  ■");
 }
 printf("■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■");
}
void ending()
{

 system("color 0b");
 int updown = 1;
 system("mode con: cols=150 lines=41");
 int i;
 system("cls");
 printf("■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■");
 for (i = 1; i < 39; i++)
 {
  printf("■                                                                                                                                                  ■");
 }
 printf("■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■");

 gotoxy(74, 13);
 printf("점수 : %d",score);
 score = 0;
 gotoxy(68, 15);
 printf("재시작 하시겠습니까?");
 gotoxy(75, 16);
 printf("EXIT");
 gotoxy(65, 15);
 printf("▶");
 ////
 while (1)
 {
  switch (_getch())
  {
  case UP:
   updown = 1;
   gotoxy(65, 16);
   printf("  ");
   gotoxy(65, 15);
   printf("▶");
   break;

  case DOWN:
   updown = 2;
   gotoxy(65, 15);
   printf("  ");
   gotoxy(65, 16);
   printf("▶");
   break;
   //  game start , exit 선택
  case ENTER:
   if (updown == 1)
   {
    system("cls");
    return ;
   }
   else
   {
    system("cls");
    gotoxy(70, 18);
    printf("안녕히가세요\n");
    Sleep(1000);
    exit(0);

   }
   //게임시작
  }
 }
}
 ///////////////////////////////////////////////////////////
 void main()
 {
  system("mode con: cols=150 lines=41"); //창 화면 크기
  setcursortype(NOCURSOR);
  while (1)
  {
   int RETN = interface01();

   if (RETN == 1)
   {
    printmap();
    play();
    ending(); -> 새로 추가한 함수
   }
   else if (RETN == 2)
   {
    printmap2();
    play2();
   }
   else if (RETN == 3)
    break;
  }
 }

 

수정한 부분

 

ending 인터페이스 추가, 점수 생성

 

게임에서 죽으면 처음으로 돌아가는 부분에 허무함도 느끼고 얼만큼 성장 게임이 끝났는지 수가 없어서 ending화면에 자신이 먹이를 먹은 만큼의 점수를 계산에 표시하는 점수 판을 생성하였다

 

 게임의 기본적인 틀을 다잡은

 같이 수업을 듣는 형들에게 배포 하였다

 

반응이 좋은 같다.

 

(수정 게임을 즐기고 있는 모습)

 

 

 

 

 

게임 인터페이스 소개

 

 

게임 시작화면.

 


 

1인용 , 2인용 , EXIT 3가지의 선택지로 구성되어 있으며

 

 

1인용을 선택하면

 

게임 실행 화면으로 이동된다.

 

 

1인용 게임 시작화면.

 

 

 

 

(먹이를 먹으면서 몸통을 늘려가는 과정)

 

벽에 닿거나, 머리가 몸통에 박으면 게임이 끝나게 된다.

 

 

뱀이 죽어서 게임이 끝나게 되면 점수 판이 표시되는 ending화면으로 이동된다.

  

ending 화면

 

 

 

 

먹이를 16 먹고 죽은 후에 1600점이 표시되는 것을 확인할 있다.

 

재시작과 EXIT두개의 선택지가 나오게 되는데, '재시작 하시겠습니까?' 누르게 되면

 

처음 시작화면으로 돌아가게 된다.(첫번째 사진)

 

EXIT 누르게 되면

 

게임 창을 나가게 되는 화면이 보여지면서 창이 닫혀진다.

 

EXIT화면

 

 

 

 

'안녕히가세요' 라는 문구가 나온 창이 닫히게 된다.

 

 

 

마지막 목표

 

  • 2인용 구현 => 어려움이 많을 같다.
  • 게임이 지루하지 않게 약간의 난이도(속도) 조절
  • 간단한 아이탬 제작
  • 게임 도중 아무 키나 누르면 게임이 일시 정지 되는 현상 수정

 

 게임 실행 파일 올려놨습니다

(32비트 버전은 호환이 안되요 ㅠㅠ)

 

​dll 파일이 없어 실행이 안되는 경우 msvcr120d.dll(첨부파일)을 받아

 

 

 

c: > windows > sysWOW64에 복사 후 실행

 

'C언어' 카테고리의 다른 글

C언어 로또 프로그램 만들기  (0) 2015.08.26
C언어 게임 만들기(4일차)  (0) 2015.08.26
C언어 게임 만들기(3일차)  (0) 2015.08.26
C언어 게임 만들기(2일차)  (0) 2015.08.26
C언어 게임 만들기(1일차)  (0) 2015.08.26
블로그 이미지

토유

개발일지

,