参考: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.GetInstance()
if RandMazeMap._instance == nil then
RandMazeMap._instance = RandMazeMap.new()
end

本文介绍了使用Cocos2d-x 3.3 Lua实现随机迷宫生成的过程,包括填充地图、挖空访问点、设置起始点、递归访问并随机选择路径等步骤,最终实现一个完整的随机地图生成算法。
1175

被折叠的 条评论
为什么被折叠?



