|
楼主 |
发表于 2015-3-3 20:16:00
|
显示全部楼层
先以接到左二把那里推往南昌的镖为例说一下我的护镖流程:
1 实现需要录制两个路径:一个是从左二把走到南昌的路径;另一个是遍历所有南昌城房间的路径。
zuo_nc="s;s;sw;s;s;s;s;s;s;s;s;nw;n;nw;n;n;n;n;set action 第一阶段结束,赶快点开始找伙计"-------最后一个的目的是为了设置一个标志,提示自己此时第一阶段形成结束
blnc="n;e;w;w;e;n;n;nw;ne;w;n;n;s;s;su;se;s;s;s;e;n;s;s;enter;w;e;e;w;out;n;e;e;eu;eu;wd;wd;w;w;w;w;n;s;s;n;w;w;wu;wu;nu;enter;w;e;e;w;n;s;out;sd;wu;ed;ed;ed;e;e;e;s;w;e;e;w;s;s;n;n;n"
现在的两个路径为字符串形式,为了方便一步一步走,需要将他们分解成数组。也就是将"n;w;s"形式的路径,分解成{"n","w","s"}的形式,此时用到下面的函数
function Split(szFullString, szSeparator)
local nFindStartIndex = 1
local nSplitIndex = 1
local nSplitArray = {}
while true do
local nFindLastIndex = string.find(szFullString, szSeparator, nFindStartIndex)
if not nFindLastIndex then
nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, string.len(szFullString))
break
end
nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, nFindLastIndex - 1)
nFindStartIndex = nFindLastIndex + string.len(szSeparator)
nSplitIndex = nSplitIndex + 1
end
return nSplitArray
end
举例:Split(zuo_nc,";"),函数返回值就为已经分解为数组的zuo_nc的路径。
由于推车的时候,gan che to n这种命令是无效的,必须写成gan che to north这种形式,所以还要把{"n","w","s"}这种形式转化成{"north","west","south"}这种形式,用到一下函数:
-------------------------------简化方向转完整方向----------------------
function zhfx(fx)
local fx=fx
if fx=="u" then return "up" end
if fx=="d" then return "down" end
if fx=="s" then return "south" end
if fx=="e" then return "east" end
if fx=="w" then return "west" end
if fx=="n" then return "north" end
if fx=="su" then return "southup" end
if fx=="sd" then return "southdown" end
if fx=="wu" then return "westup" end
if fx=="wd" then return "westdown" end
if fx=="eu" then return "eastup" end
if fx=="ed" then return "eastdown" end
if fx=="nu" then return "northup" end
if fx=="nd" then return "northdown" end
if fx=="nw" then return "northwest" end
if fx=="ne" then return "northeast" end
if fx=="sw" then return "southwest" end
if fx=="se" then return "southeast" end
return fx
end
-------------------------------简化方向转完整方向
-------------------------------简化方向的路径转完整方向的路径----------------------
function zhfxlj(lj)
local lj=lj
local temi=1
for i,v in ipairs(lj) do lj=zhfx(v) end
return lj
end
总结:接到推往南昌的镖,之后:
lj1=zuo_nc----推镖车走的第一阶段
lj2=blnc-----推镖车走的第二阶段
lj1=zhfxlj(Split(lj1,";"))-------在需要用到某个路径走之前要先做一步这个工作。
到目前为止实际上只是接到镖之后,推车走之前的准备工作。下面才开始推车流程的第一阶段: |
|