사실 이제 Random도 아니죠... Scheduled에 가깝겠죠.
~cpp
//RandomWalk2
//Random Walk
#include<iostream.h>
int main()
{
//변수선언====================================
char way[20];//이동하는 방향(8방향: 0~7)
int input_y, input_x;//좌표의 총개수
int start_y, start_x;//시작점의 좌표
int journey=0;
int y, x;//좌표의 현재 위치
int i, j;//for문 돌리는 데 필요한 변수
int count=0;//총 움직인 수
int first_go=0;
for(i=0;i<20;i++)
way[i]='\0';
//x, y 총좌표수를 입력받고 배열생성, 초기화===
cout<<"\n x좌표 수를 입력하시오: ";
cin>>input_x;
cout<<"\n y좌표 수를 입력하시오: ";
cin>>input_y;
int **base=new int *[input_y];
for(i=0;i<input_x;i++)
base[i]=new int [input_x];
for(i=0;i<input_y;i++){
for(j=0;j<input_x;j++)
base[i][j]=0;}
//시작점 입력, 대입===========================
cout<<"\n 시작점의 x좌표를 입력하시오: ";
cin>>start_x;
cout<<"\n 시작점의 y좌표를 입력하시오: ";
cin>>start_y;
y=start_y;
x=start_x;
base[y][x]=1;//시작점은 이미 한 번 왔으므로 1
first_go++;
//방향 입력===================================
cout<<"갈 방향 입력: ";
cin>>way;
do{
//방향 처리===================================
switch(way[journey]){
case '0'://북
if(y==0)
y=input_y-1;
else
y--;
if(base[y][x]==0)
first_go++;
base[y][x]++;
count++;
journey++;
break;
case '1'://북동
if(y==0)
y=input_y-1;
else if(x==input_x-1)
x=0;
else if(y==0 && x==input_x-1){
x=0;
y=input_y-1;}
else{
y--;
x++;}
if(base[y][x]==0)
first_go++;
base[y][x]++;
count++;
journey++;
break;
case '2'://동
if(x==input_x-1)
x=0;
else
x++;
if(base[y][x]==0)
first_go++;
base[y][x]++;
count++;
journey++;
break;
case '3'://남동
if(y==input_y-1)
y=0;
else if(x==input_x-1)
x=0;
else if(y==input_y-1 && x==input_x-1){
y=0;
x=0;}
else{
y++;
x++;}
if(base[y][x]==0)
first_go++;
base[y][x]++;
count++;
journey++;
break;
case '4'://남
if(y==input_y-1)
y=0;
else
y++;
if(base[y][x]==0)
first_go++;
base[y][x]++;
count++;
journey++;
break;
case '5'://남서
if(y==input_y-1)
y=0;
else if(x==0)
x=input_x-1;
else if(y==input_y-1 && x==0){
y=0;
x=input_x-1;}
else{
y++;
x--;}
if(base[y][x]==0)
first_go++;
base[y][x]++;
count++;
journey++;
break;
case '6'://서
if(x==0)
x=input_x-1;
else
x--;
if(base[y][x]==0)
first_go++;
base[y][x]++;
count++;
journey++;
break;
case '7'://북서
if(y==0)
y=input_y-1;
else if(x==0)
x=input_x-1;
else if(y==0 && x==0){
y=input_y-1;
x=input_x-1;}
else{
y--;
x--;
}
if(base[y][x]==0)
first_go++;
base[y][x]++;
count++;
journey++;
break;
default:
break;
}
}while(way[journey]!='\0');
cout<<"\n총 이동 횟수는 "<<count<<"회\n";
for(i=0;i<input_y;i++){
for(j=0;j<input_x;j++)
cout<<base[i][j]<<" ";
cout<<"\n";}
//동적할당한 것 지움
for(i=0;i<input_x;i++)
delete[] base[i];
delete [] base;
return 0;
}