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 |