2008年12月17日 星期三

C++ Builder 專案 - Check Point


這是我經過七七四十九天所以寫出來的老鼠走迷宮之演算法,也沒那麼誇張,我是上網查資料、問同學、看書後,自己想出來的演算法,以下是我的演算法。


輸入:迷宮,以二維陣列maze來表示
輸出:從入口到出口的路

( i , j , dir ) = ( 1 , 1 , E ); //一開始先把老鼠在原點
Push (( i , j , dir )); //把原點放進去堆疊裡
while(堆疊裡還有資料)
{
( i , j , dir) = pop();
while(在迷宮中還有路可以走)
{
(U , V)= 自( I , J)欲嘗試的下一步座標
if((u==m) && (v==p))
{ 成功找到出口,輸出路徑,可以停止了 }
}
}


目前我遇到的問題有
1. 老鼠的方向的判斷,可能會沒辦法一直判斷
2. 在使用struct時,”值”會傳不進去
3. 在輸出時,把老鼠走過的路徑顯示出來

目前完成度應該是50%

我做的是12*12的迷宮,迷宮比較大,感覺比較多樣化,不過要改變迷宮,要自己手動改,這是一個比較不好的方式,我會嘗試寫成可以動態產生的迷宮,另外我在輸入跟輸出方面有問題,再來就是判斷,值要傳入,輸出路徑,突然發現我的問題很多,還有很多地方要去我修改,我想再過幾天應該可以寫出來了吧,不知道演算法有沒有錯,應該是用這些就夠了吧,如果有多寫的程式我會在加上去的。
//路徑......(還沒完成的)
void path(int m,int p)
{
struct position Stack[m*p];
struct position step;
int i,j,u,v;
directions d;
step.x=step.y=1;
step.dir=E;
push(step);
while(top!=-1)
{
step=pop();
i=step.x;
j=step.y;
d=step.dir;
while(d {
u=i+move[d].dx;
u=i+move[d].dy;
if((u==m) && (v==p))
{
//輸出
}
}
}
}

沒有留言:

張貼留言