这个系列分为两部分,第一部分为迷宫的生成及操作,第二部分为自动寻路算法。
我们先看效果:
我们直入正题,先说一说生成迷宫的思路。
整个思路十分简单:
首先我们将迷宫视为一个m行n列的单元格组合,每一个单元格便可以表示为maze[i][j]。接下来迷宫与m*n单元格的区别是什么呢?对,迷宫就是相当于不同单元格以某种规律相互连通,也就相当于我们把相邻的两个单元格之间的重合线给去掉,然后按照某种规律循环,便可生成一个迷宫。
我们假定从左上角开始出发,遍历每一个单元格,如果该单元格未被访问过,则查看其相邻元素(上,下,左,右)是否有未访问的单元格,如果有则随机取出一个相邻元素并打通他们之间的重合线,如果没有则回退到上一个单元格。
上代码:
首先我们创建一个构造函数:
function Maze(obj,col,row){ this.col = col || 10; this.row = row || 10; this.canvas = obj.getContext('2d'); this.init(); }

