No older revisions available
No older revisions available
~cpp
// 랜덤 워크
#include <iostream>
#include <ctime>
using namespace std;
int main()
{
int i,j,num;
cout << "랜덤 워크를 실행하겠습니다. 숫자를 입력하세요 : ";
cin >> num;
int ** data = new int *[num];
for (i=0; i<num; i++)
data[i] = new int [num];
int dir_x[8]={0,1,1,1,0,-1,-1,-1};
int dir_y[8]={-1,-1,0,1,1,1,0,-1};
int line,col,count=0; // count는 총 움직인 횟수
srand(time(0));
line = rand() % num ;
col = rand() % num ;
for (i=0; i<num; i++)
{
for (j=0; j<num; j++)
{
data[i][j] = 0;
}
}
int check=1;
int direction = rand() % 8;
int next_x = col + dir_x[direction];
int next_y = line + dir_y[direction];
while(check>0)
{
direction = rand() % 8; // 랜덤으로 점이 움직이는 방향
next_x = col + dir_x[direction];
next_y = line + dir_y[direction];
check=0;
//벽이 아닐떄
if (next_y >= 0 && next_y < num && next_x >= 0 && next_x < num)
{
line = line + dir_y[direction];
col = col + dir_x[direction];
data[line][col]++;
count++;
}
for (i=0; i<num; i++)
{
for (j=0; j<num; j++)
{
if(data[i][j] == 0)
check++;
}
}
};
for (i=0; i<num; i++)
{
for (j=0; j<num; j++)
{
cout << data[i][j] << "\t" ;
}
cout << endl;
}
cout << "총 움직인 횟수는 " << count << "번 입니다.\n";
for(i=0;i<num;i++)
delete [] data [i];
delete [] data;
return 0;
}