# Random Walk/임민수

```~cpp
#include <iostream>
using namespace std;
#include <ctime>
int const arsize = 11;
void main()
{
int num,x,y,cnt=0,total=0,end=1,temp;
cout << "원하는 칸의 크기를 입력하세요 : ";
cin >> num;
int square[arsize][arsize] ={0,};
cout << "바퀴벌레의 처음 좌표를 입력하세요 (x,y): ";
cin >> x;
cin >> y;
square[x][y]=1;
srand(0);
while(end < num*num)
{
temp = rand()%8;
switch (temp)
{
case 1 :
if(x-1>=0 && y-1>=0)
{
y--;
x--;
}
break;
case 2 :
if(x-1>=0)
x--;
break;
case 3 :
if(x-1>=0 && y+1<num)
{
x--;
y++;
}
break;
case 4 : if(y-1>=0)
y--;
break;
case 5 : if(y+1<num)
y++;
break;
case 6 : if(x+1<num && y-1>=0)
{
x++;
y--;
}
break;
case 7 : if(x+1<num)
x++;
break;
case 0 : if(x+1<num && y+1<num)
{
x++;
y++;
}
break;
}
if (square[x][y]==0)
end++;
square[x][y]++;
total++;

}

for (int i = 0 ; i<num ; i++)
{
for (int j=0 ; j<num ; j++)
cout << square[i][j] << "\t";
cout << endl;
}

cout << endl << "총 이동횟수는 " <<total<<endl;

}
```

최근에 C++ 로 짠것..

## Board.cpp ¶

```~cpp
#include <iostream>
using namespace std;
#include"Board.h"
#include"Bug.h"
Board::Board()
{
for (int i = 0; i < MAX_BOARD ; i++)
{
for (int j = 0; j < MAX_BOARD ; j++)
board[i][j]=0;
}
EndCount=0;
}

void Board::Show_Board()
{
for (int i = 0; i < MAX_BOARD ; i++)
{
for (int j = 0; j < MAX_BOARD ; j++)
cout << board[i][j] << "\t" ;
cout << endl;
}
cout << endl;
}

void Board::Make_Footprint(int a_x, int a_y)
{
board[a_x][a_y]++;
if(board[a_x][a_y]==1)
EndCount++;
}

bool Board::IsNotEnd()
{
if (EndCount < 25)
return true;
else
return false;
}
```

## Bug.cpp ¶

```~cpp

#include <iostream>
using namespace std;
#include"Bug.h"
#include <ctime>

Bug::Bug()
{
x=0; y=0;
}

void Bug::move()
{
int way;
way = rand()%8;
if (x+MOVE_X[way]> -1 && x+MOVE_X[way]<5 && y+MOVE_Y[way] > -1 && y+MOVE_Y[way] < 5)
{
x+=MOVE_X[way];
y+=MOVE_Y[way];
}
}

```

## RandomWalk.cpp ¶

```~cpp

#include <iostream>
using namespace std;
#include "Board.h"
#include "Bug.h"
#include <ctime>

void main()
{
srand((unsigned)time(NULL));
Bug bug1;
Board board;
board.Make_Footprint(bug1.return_x(), bug1.return_y());
board.Show_Board();
do{
bug1.move();
board.Make_Footprint(bug1.return_x(), bug1.return_y());
board.Show_Board();
}while(board.IsNotEnd());

}
```

## Board.h ¶

```~cpp

#include <iostream>
using namespace std;
#include "Board.h"
#include "Bug.h"
#include <ctime>

void main()
{
srand((unsigned)time(NULL));
Bug bug1;
Board board;
board.Make_Footprint(bug1.return_x(), bug1.return_y());
board.Show_Board();
do{
bug1.move();
board.Make_Footprint(bug1.return_x(), bug1.return_y());
board.Show_Board();
}while(board.IsNotEnd());

}

```

## Bug.h ¶

```~cpp
#include <iostream>
using namespace std;
#include "Board.h"
#include "Bug.h"
#include <ctime>

void main()
{
srand((unsigned)time(NULL));
Bug bug1;
Board board;
board.Make_Footprint(bug1.return_x(), bug1.return_y());
board.Show_Board();
do{
bug1.move();
board.Make_Footprint(bug1.return_x(), bug1.return_y());
board.Show_Board();
}while(board.IsNotEnd());

}

```