랜덤 워크...완성은 했는데 단점이 보이네요..ㅡㅡ^ ---- {{{~cpp #include #include using namespace std; int end(int aBoard[][5]); void output(int aBoard[][5]); void main() { int board[5][5]; srand(time(0)); int setX = rand() %5; int setY = rand() %5; int answer,go,x,y; for(int i = 0; i < 5; i++) for(int j = 0; j < 5; j++) board[i][j]=0; board[setX][setY] += 1; x = setX; y = setY; do { go = rand() % 8; switch(go) { case 0 : x--; y++; if(x == -1) x += 2; if(y == 5) y -= 2; break; case 1 : y++; if(y == 5) y -= 2; break; case 2 : x++; y++; if(x == 5) x -= 2; if(y == 5) y -= 2; case 3 : x--; if(x == -1) x += 2; break; case 4 : x++; if(x == 5) x -= 2; break; case 5 : x--; y--; if(x == -1) x += 2; if(y == -1) y += 2; break; case 6 : y--; if(y == -1) y += 2; break; case 7 : x++; y--; if(x == 5) x -= 2; if(y == -1) y += 2; } board[y][x] += 1; answer = end(board); }while(answer == 1); output(board); } int end(int aBoard[][5]) { int find = 0; find = 0; int aAnswer; for(int m = 0 ; m < 5 ; m++) for(int n = 0 ; n < 5 ;n++) if (aBoard[m][n] == 0) find++; //0이 있으면 카운트 if (find != 0) aAnswer = 1; //0이 있으면 1 리턴 else aAnswer = 0; return aAnswer; } void output(int aBoard[][5]) { for(int s = 0 ; s < 5 ; s++) { for(int t = 0 ; t < 5 ;t++) { cout << aBoard[s][t] << "\t"; } cout << endl; } cout << endl; } }}} SeeAlso [문원명] ----- [RandomWalk]