| 
 | 
 
 楼主 |
发表于 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 
 |   
 
 
 
 |