當我們學習了棧這種資料結構以後,我們就可以利用棧來實現乙個簡單的迷宮遊戲 ,首先我們給出迷宮的地圖,這是乙個二維陣列。 ,
,,,,
,,,,
, 我們從陣列的(9,6)這個位置開始走,直到(0,2)這個位置走到出口。下面是實現的**
struct seat
int _x;
int _y;
};class maze
bool i***it(const seat& s)
return false;
} bool gomaze(seat& enter)
//入口可以走,先走這一步
stacks;
s.push(enter);
while (!s.empty())
maze[cur._x][cur._y] = 2;
//先向上走
seat up(cur);
up._x -= 1;
if (ispass(up))
//向左左
seat left(cur);
left._y -= 1;
if (ispass(left))
//向右走
seat right(cur);
right._y += 1;
if (ispass(right))
//向下走
seat down(cur);
down._x += 1;
if (ispass(down))
maze[cur._x][cur._y] = 3;
s.pop();
} return false;
} maze(int* m, int r, int c)
:row(r)
,col(c)
} }void printmaze()
cout << endl;
} cout << endl;
}private:
vector> maze;
int row;
int col;
};
我們將每走過的一步路都標記成2並進行壓棧操作,當走到死胡同時,例如這裡的(3,3)這種情況,我們將其標記成3,然後進行出棧操作,回彈到上乙個路口,選擇其他路走,這時候就可以找到出口。
這是一開始的地圖,接下來我們開始走迷宮。
成功完成了乙個迷宮演算法,當然這只是迷宮的乙個簡單情況,我們還可以將迷宮地圖放入乙個檔案中,然後從檔案中讀取迷宮的地圖,讀者可以自行實現。
棧實現迷宮
棧的型別定義 棧是一種特殊的線性表,限定只能在表的一端進行插入和刪除操作的線性表。在表中,允許插入刪除的一端稱為 棧頂 不允許插入刪除的另一端稱為 棧底 沒有元素的棧稱為空棧,插入元素稱為入棧,刪除元素稱為出棧,稱為先進後出。順序棧型別的定義 順序棧的儲存方式是陣列,需要事先為他分配乙個可容納最多元...
棧實現迷宮演算法
棧實現迷宮回溯演算法 實現 include using namespace std include include define n 10 矩陣最大行列數 template class mazestack 迷宮將要用到的棧 mazestack void push t x this ptr size ...
使用棧實現迷宮
迷宮是個益智的小遊戲,但是就算是個小遊戲也會有外掛程式吧,那麼就來寫乙個小小的迷宮來玩玩吧 雖然是程式自己走的。但是這個不重要,重要的是,我不用燒腦玩迷宮啊 物件導向實現迷宮 includestruct pos templateclass maze maze int maze void print ...