這個(gè)系列分為兩部分,第一部分為迷宮的生成及操作,第二部分為自動尋路算法。
我們先看效果:
我們直入正題,先說一說生成迷宮的思路。
整個(gè)思路十分簡單:
首先我們將迷宮視為一個(gè)m行n列的單元格組合,每一個(gè)單元格便可以表示為maze[i][j]。接下來迷宮與m*n單元格的區(qū)別是什么呢?對,迷宮就是相當(dāng)于不同單元格以某種規(guī)律相互連通,也就相當(dāng)于我們把相鄰的兩個(gè)單元格之間的重合線給去掉,然后按照某種規(guī)律循環(huán),便可生成一個(gè)迷宮。
我們假定從左上角開始出發(fā),遍歷每一個(gè)單元格,如果該單元格未被訪問過,則查看其相鄰元素(上,下,左,右)是否有未訪問的單元格,如果有則隨機(jī)取出一個(gè)相鄰元素并打通他們之間的重合線,如果沒有則回退到上一個(gè)單元格。
上代碼:
首先我們創(chuàng)建一個(gè)構(gòu)造函數(shù):
function Maze(obj,col,row){ this.col = col || 10; this.row = row || 10; this.canvas = obj.getContext('2d'); this.init(); }
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26