No older revisions available
No older revisions available
~cpp
// 랜덤 워크 만들기...(마구 더해지는 워크...)
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int test(int);
int main()
{
srand ( (unsigned int) time (NULL) );
cout << "랜덤 프로그램입니다..\n";
cout << "몇 줄을 만들까요?\n";
int line;
cin >> line;
cout<<endl<<endl;
int ** rands = new int *[line+2];
for(int i=0;i<line+2;i++)
rands[i] = new int [line+2];
for(i=0;i<line+2;i++)
{
for(int j=0;j<line+2;j++)
rands[i][j] = 0;
}
for(i=0;i<line+2;i++)
{
rands[i][line+1] = -1;
rands[i][0] = -1;
rands[line+1][i] = -1;
rands[0][i] = -1;
}
int x = rand() % line + 1;
int y = rand() % line + 1;
rands[x][y]++;
int bang;
int count;
int sum=0;
do
{
cin.get();
system("cls");
bang = rand() % 8;
if(bang==0)
{
x--;
y--;
if(rands[x][y]==-1)
{
x++;
y++;
}
}
else if(bang==1)
{
x--;
if(rands[x][y]==-1)
x++;
}
else if(bang==2)
{
x--;
y++;
if(rands[x][y]==-1)
{
x++;
y--;
}
}
else if(bang==3)
{
y--;
if(rands[x][y]==-1)
y++;
}
else if(bang==4)
{
y++;
if(rands[x][y]==-1)
y--;
}
else if(bang==5)
{
x++;
y++;
if(rands[x][y]==-1)
{
x--;
y--;
}
}
else if(bang==6)
{
x++;
y--;
if(rands[x][y]==-1)
{
x--;
y++;
}
}
else if(bang==7)
{
x++;
if(rands[x][y]==-1)
x--;
}
rands[x][y]++;
sum++;
count=0;
for(i=1;i<line+1;i++)
{
for(int j=1;j<line+1;j++)
{
if(rands[i][j]==0)
count++;
}
}
for(i=1;i<line+1;i++)
{
for(int j=1;j<line+1;j++)
cout<<rands[i][j]<<"\t";
cout<<endl;
}
}while(count!=0);
cin.get();
cout<<"\n\n총 움직인 횟수는 " << sum << " 번 입니다.\n";
for(i=0;i<line+2;i++)
delete [] rands [i];
delete [] rands;
return 0;
}
/*
재동형의 말대로...
두 가지 고쳐보기...
1. 방화벽 없이 방향대로 움직이기 전에 그것이 칸 안인지 확인하고 점 찍기..
2. 방향을 x와 y의 배열로 나타내어 움직이기..
*/