【梦话连篇】Tips:About Draw Map
本帖最后由 hijacker 于 2013-3-31 05:02 PM 编辑论坛上有个mush版的GPS,自带非图形界面的画地图功能,功能已经非常强大了,但自动化程度还不够高,表现在处理一模一样(同名同描述)的两个房间时无力。
提供一个在画地图模式下,处理非随机迷宫的同名同描述房间的思路,需要用到两个ID,A是主控ID,B起到路标作用。流程图如下:
选择出口方向、保存房间之间的连接以及B的寻路这三个环节略了,在我刚才提到的GPS里有写到。
再顺手贴一个简单的数据结构——栈的lua定义,也许有人会用到:-)stack = {
new = function()
local _S = {}
setmetatable(_S, {__index = stack})
return _S
end,
}
function stack:push(elem)
table.insert(self,elem)
print(elem .. "入栈")
end
function stack:pop()
if #self == 0 then
print("栈已空!")
return nil
end
local top = self[#self]
table.remove(self, #self)
print(top, "出栈")
return top
end
--用法实例:
local roomStack = stack.new()
roomStack:push(1)
roomStack:push(2)
local top = roomStack:pop()
local top = roomStack:pop()
local top = roomStack:pop()欢迎指正。
北大侠客行MUD,中国最好的MUD 嘿嘿。
yct49俺再学都学不会。。 看不懂{:8_292:} 也就是你在做比较,如果两个房间描述一样,你就看看这两个房间所连接的房间描述是否一样,如果还一样,你就认为他们是同一个房间,如果不一样就说明他们是两个不同的房间? 不过pkxkx这样搞很恶心啊,很多mud都会输出一个房间id,这样大家都方便的比较两个房间是否是同一个房间了=>比较id就行 不过这个方法对迷宫之类的还是有局限性啊,是不是需要一个flag指示某一部分是迷宫,这样不会吧mapper的逻辑完全搞乱 回复 5# ferdinand
我不是那个意思……比如你走到了房间y,你发现已经画好的房间x和当前房间y一模一样,出口房间也完全相同,这时你就让你的大米去x,如果大米走到x后和你在一个房间,说明x和y是一个房间。我前面也说了,这种方法只适用于画非随机迷宫的地图,也就是说相邻房间u和v,u->v和v->u的路径是完全反向的这种情况。随机迷宫直接无视。
页:
[1]