~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; }