巧用棧結構實現迷宮遊戲

2021-08-11 00:23:49 字數 1404 閱讀 4415

當我們學習了棧這種資料結構以後,我們就可以利用棧來實現乙個簡單的迷宮遊戲 ,首先我們給出迷宮的地圖,這是乙個二維陣列。 ,

,,,,

,,,,

, 我們從陣列的(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 ...