#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <conio.h>
void printstr(int d)
{
int space=0;
int wall=1;
int inwall=4;
int my=2;
int you=3;
int move=5;
int setcolor[10]={1,8,13,10,15,15,15};
HANDLE hConsole;
hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hConsole, setcolor[d]);
char str[10][3]={" ","■","●","●","▧","◈","●"};
printf("%s",&str[d][0]);
}//printstr
int lencheak(int maxlen)
{
int i=1;
for(i=1;i*i<maxlen;i++);
return i-1;
}//lencheak
void right(int arr[100][100],int *x,int *y,int inwall, int wall,int *remember)
{
if(arr[*x][(*y)+1]==inwall || arr[*x][(*y)+1]==wall)
{}
else
{
*remember=arr[(*x)][++(*y)];
}
}//right
void left(int arr[100][100],int *x,int *y,int inwall, int wall,int *remember)
{
if(arr[*x][(*y)-1]==inwall || arr[*x][(*y)-1]==wall)
{}
else
{
*remember=arr[(*x)][--(*y)];
}
}//left
void up(int arr[100][100],int *x,int *y,int inwall, int wall,int *remember)
{
if(arr[(*x)-1][*y]==inwall || arr[(*x)-1][*y]==wall)
{}
else
{
*remember=arr[--(*x)][(*y)];
}
}//up
void down(int arr[100][100],int *x,int *y,int inwall, int wall,int *remember)
{
if(arr[(*x)+1][*y]==inwall || arr[(*x)+1][*y]==wall)
{}
else
{
*remember=arr[++(*x)][(*y)];
}
}//up
void movef(int cur,int arr[100][100],int *x,int *y,int inwall, int wall,int *remember,int *zhit,int *zx,int *zy)
{
switch(cur)
{
case 77:
right(arr,x,y,inwall,wall,remember);
break;
case 75:
left(arr,x,y,inwall,wall,remember);
break;
case 72:
up(arr,x,y,inwall,wall,remember);
break;
case 80:
down(arr,x,y,inwall,wall,remember);
break;
}
}
void movez(int cur,int arr[100][100],int *x,int *y,int inwall, int wall,int *zremember,int *zhit,int *zx,int *zy)
{
if(*zhit==0) *zhit=1;
else
{
*zhit=0;
arr[*x][*y]=*zremember;
}
*zx=*x;
*zy=*y;
*zremember=arr[*x][*y];
printf("제트리멤버 %d",*zremember);
system("pause");
}
int main(void)
{
int x;
int y;
int ch;
int i;
int j;
int maxlen;
int stagenum;
int arr[100][100];
char cur=-32;
char oldcur;
int space=0;
int wall=1;
int inwall=4;
int my=2;
int you=3;
int move=5;
int remember=space;
int zx=0;
int zy=0;
int zhit=0;
int zremember=0;
FILE *fp=fopen("stage1.txt","r");
if(fp==NULL)
{
puts("파일오픈 실패!");
return -1;
}
fscanf(fp,"%d", &maxlen);
fscanf(fp,"%d", &stagenum);
//데이터 읽음.
for(i=0;i<lencheak(maxlen);i++)
{
for(j=0;j<lencheak(maxlen);j++)
{
fscanf(fp,"%d", &ch);
arr[i][j]=ch;
}
}
//커서 세팅.
x=lencheak(maxlen)/2;
y=x;
arr[x][y]=5;
while(1)
{
system("cls");
//데이터 출력.
for(i=0;i<lencheak(maxlen);i++)
{
for(j=0;j<lencheak(maxlen);j++)
{
if(zhit==1 && zx==i && zy==j) printstr(6);
else
printstr(arr[i][j]);
}
printf("\n");
}
for(;;)
{
if(cur!=-32)
oldcur=cur;
cur=getch();
if(cur!=-32)
break;
}
arr[x][y]=remember;
if((cur=='z' && arr[x][y]!=space) || (cur=='z' && zhit==1))
movez(cur,arr,&x,&y,inwall,wall,&zremember,&zhit,&zx,&zy);
else
movef(cur,arr,&x,&y,inwall,wall,&remember,&zhit,&zx,&zy);
arr[x][y]=move;
}//while end
fclose(fp);
system("pause");
return 0;
}