参考:http://blog.csdn.net/sssogs/article/details/7658940
1.填充地图
2.挖空需要访问的所有点
3.设置起始点
4.开始访问
4.1获取当前点4个方向上的可访问且没有访问过的点
4.2随机选择其中一个点进行访问,并设置为当前访问点,将该点加入已访问列表,同时挖空2个点之间的所有点
4.3如果当前点各个方向上都没有可访问的点,那么从之前访问过的点里随机选取一个点作为当前访问点,并重复以上步骤
5.如果所有点都已被访问过,结束,随机地图完成
代码
--[[
随机迷宫地图生成类
--]]
local RandMazeMap = class("RandMazeMap")
RandMazeMap._instance = nil
RandMazeMap._tmx = nil
RandMazeMap._emptyId = nil
RandMazeMap._fullId = nil
RandMazeMap._mapSize = nil
RandMazeMap._curPos = nil
RandMazeMap._toVisit ={} -- 用于位置直接索引
RandMazeMap._toVisitList = {} -- 用于列表序号索引
RandMazeMap._visited = {} -- 用于索引记录已访问过的点的索引 主要是方便从已访问的里面取随机点用
function RandMazeMap.GetInstanc