#include <stdio.h>
#include <conio.h>
#include <windows.h>
#define UP 72
#define DOWN 80
#define LEFT 75
#define RIGHT 77
int px=10 ;
int py=10 ;
int score=1;
int a=0; // 이동방향
void gotoxy(int x, int y)
{
COORD Pos = {x, y};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), Pos);
}
void map(int r1, int r2)
{
gotoxy(px,py);
printf ("*");
gotoxy(r1,r2);
printf ("@");
}
void init() //초기상태
{
for (int x=0; x<31; x++){
for (int y=0; y<31; y++){
gotoxy(x, y);
if (x==0||y==0||x==30||y==30){
printf (".");
}
}
}
gotoxy(45,2);
printf("점수 : %d", score);
}
int main()
{
char c;
int e, e2;
int x, y;
int n, i=-1;
srand(time(NULL)); //랜덤 시드 설정 (최초 한 번만!)
int random = rand()%29+1;
int random2=rand()%29+1;
system( "mode con lines=33 cols=55" );
for (;;){
e=px;
e2=py;
if (_kbhit()) { //키보드 입력 확인 (true / false)
c = _getch();
if (c == -32) { // -32로 입력되면
c = _getch(); // 새로 입력값을 판별하여 상하좌우 출력
switch (c) {
case LEFT:
if (a==3||a==4)
x=px;
y=py;
n=a;
if (a==2&&score!=1){
break;
}
a=1;
break;
case RIGHT:
if (a==3||a==4)
x=px;
y=py;
n=a;
if (a==1&&score!=1){
break;
}
a=2;
break;
case UP:
if (a==1||a==2)
x=px;
y=py;
n=a;
if (a==4&&score!=1){
break;
}
a=3;
break;
case DOWN:
if (a==1||a==2)
x=px;
y=py;
n=a;
if (a==3&&score!=1){
break;
}
a=4;
break;
}
}
}
switch (a){
case 1:
px--;
break;
case 2:
px++;
break;
case 3:
py--;
break;
case 4:
py++;
break;
}
//지우기/꺾였을 때**********************
/* if (n!=0){
if (i==-1){
i=score-1;
}
if (n==1){
gotoxy (x+i, y);
}
else if (n==2) {
gotoxy (x-i, y);
}
else if (n==3){
gotoxy (x, y+i);
}
else if (n==4){
gotoxy (x, y-i);
}
printf (" ");
if (i==1){
n=score;
i=0;
}
i--;
}*/
/*
x, y=방향이 바뀌었을 때 플레이어 위치
i=지울 뱀의 위치
n=바뀌기 전의 방향 (지울 방향)
*/
if(px==0||px==31||py==0||py==31){
system ("cls");
printf ("\n점수 : %d\n", score);
return 0;
}
map(random, random2);
/*if(a==1){ // left
gotoxy (e+score-1, e2 );
}
else if(a==2){
gotoxy (e-score+1, e2);
}
else if(a==3){
gotoxy (e, e2+score-1);
}
else{
gotoxy (e, e2-score+1);
}
printf (" ");*/
if (px==random&&py==random2){
gotoxy (random, random2);
printf (" ");
random=rand()%29+1;
random2=rand()%29+1;
gotoxy(random, random2);
printf ("@");
score++;
}
init();
Sleep(70);
}
}
/*
*********게임 기능 정리 *********
1. 누른 방향키 방향대로 직진함
2. 벽에 닿으면 게임이 끝남
3. 아이템 @를 먹으면 몸이 1칸씩 늘어남+점수가 늘어남
**************************/