這個系列分為兩部分,第一部分為迷宮的生成及操作,第二部分為自動尋路算法。

      我們先看效果:

      我們直入正題,先說一說生成迷宮的思路。

      整個思路十分簡單:

      首先我們將迷宮視為一個m行n列的單元格組合,每一個單元格便可以表示為maze[i][j]。接下來迷宮與m*n單元格的區(qū)別是什么呢?對,迷宮就是相當(dāng)于不同單元格以某種規(guī)律相互連通,也就相當(dāng)于我們把相鄰的兩個單元格之間的重合線給去掉,然后按照某種規(guī)律循環(huán),便可生成一個迷宮。

       我們假定從左上角開始出發(fā),遍歷每一個單元格,如果該單元格未被訪問過,則查看其相鄰元素(上,下,左,右)是否有未訪問的單元格,如果有則隨機(jī)取出一個相鄰元素并打通他們之間的重合線,如果沒有則回退到上一個單元格。

      上代碼:

      首先我們創(chuàng)建一個構(gòu)造函數(shù):

function Maze(obj,col,row){ this.col = col || 10; this.row = row || 10; this.canvas = obj.getContext('2d'); this.init();
}

網(wǎng)友評論