|
楼主 |
发表于 2019-3-24 18:07:53
|
显示全部楼层
现在我们抓到了3个出口,然后把它返回之前的函数
local_exit=function(n,l,w)
……
exit.locl=exit_set(w[3])
……
这样,exit.locl就等于之前的l_set,它里边应该就装着west,east,south了。
再接下来,要对这三个出口赋予true,在其它的函数调用中,如果发现west=true,就说明往西的出口是开放的。
反之,如果没有找到west=true,则说明在当前房间,west的出口是不存在的。
还是——
local_exit=function(n,l,w)
……
for _,p in pairs(exit.locl) do
locl.exit[p]=true
print('p='..p)
end
……
这个比较难懂,我解释一下,就是说,in pairs,逐个比较exit.locl,也就是比较里边存的west,east,south,找到一个,则将这个方向赋予true。
那么这段程序执行完毕后,就是——
locl.exit[west]=true
locl.exit[east]=true
locl.exit[south]=true
------
还记得之前梅林函数的判断吗?那个while not do,就是在用这个判断。
例如:下一步应该走east,就判断locl.exit[east]=true吗?等于就是有这个方向,能走通,木有就说明此路不同,需要换下一个方向。
真绕,估计能看到这里的,都是有一定基础的机器高手了,我自己写到这里也担心能看懂的有多少人呢?
继续。。。。
我为了判断是否取得了完整的locl.exit,我就在上边赋值的时候,打印那个p变量,也就是这个——
for _,p in pairs(exit.locl) do
locl.exit[p]=true
print('p='..p)
end
|
|