~cpp 노 가 다
~cpp
CASE
[1][2][3]
[4][ ][5]
[6][7][8]
~cpp
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
struct mouse_xy
{
int x;
int y;
}mouse;
int main()
{
int map[5][5];
int a;
srand(time(0));
a = rand() % 8 + 1;
mouse.x=1;
mouse.y=1;
///// 력방법 김 교님
/////려므로 무!
/////데 력부
map[0][0]=0;
map[0][1]=1;
map[0][2]=0;
map[0][3]=1;
map[0][4]=1;
map[1][0]=1;
map[1][1]=0;
map[1][2]=1;
map[1][3]=1;
map[1][4]=1;
map[2][0]=0 ;
map[2][1]=0;
map[2][2]=1;
map[2][3]=0;
map[2][4]=1;
map[3][0]=0;
map[3][1]=0 ;
map[3][2]=0;
map[3][3]=1;
map[3][4]=0;
map[4][0]=0;
map[4][1]=1;
map[4][2]=0;
map[4][3]=1;
map[4][4]=0;
////////////////////데 력 끝
while(1)
{
if (mouse.x==5 && mouse.y== 5)
{break;
}
///////막 부 달다면 while문 나갑다.
a = rand() % 8 + 1;
////변 a는 1~8 랜덤값갖다.
switch (a){
case 1:
if (0<mouse.x-1 && mouse.x-1<6 && 0<mouse.y-1 && mouse.y-1<6)
//다 되는 경로가 벽 닐경 동다.
{
if (map[mouse.x-1-1][mouse.y-1-1]==0)
{
//각 맞게 동다.
mouse.x -=1;
mouse.y -=1;
printf("(%d,%d)=>(%d,%d)로갓\n ",mouse.x+1,mouse.y+1,mouse.x,mouse.y);
break;
}
}
case 2:
if (0<mouse.x && mouse.x<6 && 0<mouse.y-1 && mouse.y-1<6)
{
if (map[mouse.x-1][mouse.y-1-1]==0)
{
mouse.y -=1;
printf("(%d,%d)=>(%d,%d)로갓\n ",mouse.x,mouse.y+1,mouse.x,mouse.y);
break;
}
}
case 3:
if (0<mouse.x+1 && mouse.x+1<6 && 0<mouse.y-1 && mouse.y-1<6)
{
if (map[mouse.x+1-1][mouse.y-1-1]==0)
{mouse.x +=1;
mouse.y -=1;
printf("(%d,%d)=>(%d,%d)로갓\n ",mouse.x-1,mouse.y+1,mouse.x,mouse.y);
break;
}
}
case 4:
if (0<mouse.x-1 && mouse.x-1<6 && 0<mouse.y && mouse.y<6)
{
if (map[mouse.x-1-1][mouse.y-1]==0)
{mouse.x -=1;
printf("(%d,%d)=>(%d,%d)로갓\n ",mouse.x+1,mouse.y,mouse.x,mouse.y);
break;
}
}
case 5:
if (0<mouse.x+1 && mouse.x+1<6 && 0<mouse.y && mouse.y<6)
{
if (map[mouse.x+1-1][mouse.y-1]==0)
{mouse.x +=1;
printf("(%d,%d)=>(%d,%d)로갓\n ",mouse.x-1,mouse.y,mouse.x,mouse.y);
break;
}
}
case 6:
if (0<mouse.x-1 && mouse.x-1<6 && 0<mouse.y+1 && mouse.y+1<6)
{
if (map[mouse.x-1-1][mouse.y+1-1]==0)
{mouse.x -=1;
mouse.y +=1;
printf("(%d,%d)=>(%d,%d)로갓\n ",mouse.x+1,mouse.y-1,mouse.x,mouse.y);
break;
}
}
case 7:
if (0<mouse.x && mouse.x<6 && 0<mouse.y+1 && mouse.y+1<6)
{
if (map[mouse.x-1][mouse.y+1-1]==0)
{
mouse.y +=1;
printf("(%d,%d)=>(%d,%d)로갓\n ",mouse.x,mouse.y-1,mouse.x,mouse.y);
break;
}
}
case 8:
if (0<mouse.x+1 && mouse.x+1<6 && 0<mouse.y+1 && mouse.y+1<6)
{
if (map[mouse.x+1-1][mouse.y+1-1]==0)
{mouse.x +=1;
mouse.y +=1;
printf("(%d,%d)=>(%d,%d)로갓\n ",mouse.x-1,mouse.y-1,mouse.x,mouse.y);
break;
}
}
// switch 문 로 각 case if문 break를 므로
// 다 경로가 벽경 그 래 case문 되록()
// 놔
}
}
return 0;
}