szybd
发表于 2014-1-8 14:48:21
就着这,打打,走走,一会儿就到了第一个地图的出口。怎么知道到了第一个地图的出口呢?
其实前面已经交代过了,这里再复习一下:
进入第一个地图前,look map,我们知道了入口和出口的位置,我们没行走一步,都记录了自己的坐标。当自己的坐标和出口的坐标一样时,我们知道自己已经到了出口了。
szybd
发表于 2014-1-8 14:51:27
回顾cjgwalkunbusydo()的处理。当我们达到出口时,我们会发出一个指示:
if cjgcurrentx == cjgoutweizhi and cjgcurrenty == 1 then
AMNote("已经到达第一个地图出口")
cjgstate = "map1out"
Execute("set cjg gooutmap1")
return
end
现在,我们针对这个指示做一个触发:
name = "cjg19"
match="^[>\\s]*设定环境变量:cjg = \"gooutmap1\".*"
cmd = "cjggooutmap1()"
addmytriggerzz(name,match,cmd)
szybd
发表于 2014-1-8 14:53:03
这个触发干什么呢?当然是进入第二个地图。不过不能简单"enter",要防止处于busy状态。
function cjggooutmap1()
Note("现在到了第一个地图的出口了")
cjgstate = "map1out"
checkbusystart()
addunbusyfunc(cjggooutmap1unbusydo)
checkbusyon()
DeleteTimer("cjgxunluotimer")
end
function cjggooutmap1unbusydo()
checkbusyend()
Execute("enter")
cjgstate = "map2enter"
Note("现在到达了第二个地图的入口处")
cjgblon()
end
szybd
发表于 2014-1-8 14:55:59
终于,我们到达了第二个地图的入口位置,要进行第二个地图的处理了。处理的办法就是对第二个地图进行遍历。 cjgblon()。
前面我们谈方案的时候,其实没有说要遍历,而是随机走,以简化处理。
而我在实现原型的时候,发现,把之前的地图遍历程序拿过来改一下,更方便,所以直接采用遍历方案了。遍历方案其实是比随机走更加优化的一个方案,它可以避免重复走老路,寻找目的地的速度更加快捷。
下面我就来讲解遍历方案的原理。
szybd
发表于 2014-1-8 14:57:46
遍历方案讲完了,这个机器人也就结束了。当然,这个机器人只是一个单人藏经阁的机器人。如果要用于多人藏经阁任务,还需做一些修改,这个以后再说。
hahh
发表于 2014-1-9 19:43:16
精华在第4,5页,果断mark
szybd
发表于 2014-1-9 20:47:08
最精华的部分还没有发出来呢。就是遍历。
我在考虑怎么把遍历通俗易懂的讲清楚。
有了这个遍历做基础,做GPS就是体力活了。
pssjim
发表于 2014-1-10 01:16:54
非常感謝仔細教學阿~
希望有天能有機會請教問題~
feehoo
发表于 2014-1-10 10:08:42
支持精华帖。
inkflower
发表于 2014-1-10 11:51:12
古墓cjg苦手前来贺喜
页:
1
2
3
4
5
6
7
[8]
9
10