4일차


수정된 코드


코드 보기

#include <stdio.h>...

#define  UP  72...

void setcursortype(CURSOR_TYPE c)...

void textcolor(int color_number)...

gotoxy(int x, int y)...

void printmap()… // 생략

 

void play()

{

int direction = UP;

int Y = 19;

int X = 70;

int TX = 70;

int TY = 19;       // 꼬리의 좌표를 나타냄

int Fheight, Fwidth;

int eat = 0;

int length = 1;

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[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;

}  // 뱀머리 방향의 자취를 확인한 방향대로 꼬리 좌표값을 변경해준다.(머리가 칸을 지날때 위로 움직였었다면 꼬리좌표의 Y값을 -1해줌)

 

SnakeNStar[--Y][X / 2] = 1;                                // 다음에 움직이는 칸에 뱀값을 집어넣고

gotoxy(X, Y);                                                            // 커서를 다음칸으로 이동

textcolor(12);

printf("");                                                                    // 뱀을 그려준다.

}

}

else if (direction == DOWN)...

else if (direction == LEFT)...

else if (direction == RIGHT)… // 생략 (위와 같음)

 

Sleep(90);

}

}

 

int interface01()...

void main()…  // 생략

 

 


바뀐


  • 먹이를 먹으면 꼬리가 늘어나도록 했다.



다음 목표


  • 점수 시스템을 추가해서 도전의식이 생기도록 한다.
  • 2인용을 구현 ( 하나의 맵에서 경쟁 )


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

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

토유

개발일지

,