|
发表于 2010-6-24 13:47:26
|
显示全部楼层
原帖由 seagate 于 2010-6-24 01:23 PM 发表 
大驿道或者大官道之类也不用怕,识别错了也不要紧,等到出现唯一的房间再纠正不久可以了。
我乱入最新版的解决办法是:
每次走路都看所有方向,然后拿地名,描述,方向和邻居房间名和数据库比较,对了继续走,
错 ...
呵呵,越来越有意思了,其实乱入就是一个一题多解的事情,有这么多版本的自动推车机器人就说明了这一点。对我来说,重要的不是做出机器人的结果,光是这些讨论交流做机器人的想法就觉得很有意思了。
我的思路其实基本上和seagate是类似的,不过不是推着车走看方向,而是把车扔那里到处遍历一番(因为一来有时候会乱入两步,不推着车先自己走找到地方效率高,二来最终反正找伙计也要遍历,代码其实都可以统一了。
大致的思路是,确认打跑了最后一个劫匪以后,执行下面的乱入函数:
checkbusy
my_robber_num=1
robber_ask_times=0
#if (@inBusy=0) {
#timer off
#t- dummy/place
#if (@go_num=0) {
;; 到地方以后的乱入
#t+ dummy/person
#t- dummy/luanru
} {
;; 途中的乱入
#t+ dummy/person
#t+ dummy/luanru
}
#t- hubiao_placeluanru
#if (@now_place=赏月台) {
#show 护镖途中信息 真是中奖了,乱入到赏月台给你恢复了!
#t- dummy/luanru
#t- dummy/person
tell @yourid searchpath~=down
//延时两秒再打开placeluanru
#alarm {+2} {
#t+ hubiao_placeluanru
saw_huoji=1
}
} {
beginluanru
}
}
其中的beginluanru是用来遍历乱入的函数,找到了以后(saw_huoji=1)再通过下列置于timer的函数来返回
#if (@saw_huoji=0) {
//checkbusy
ask @yourid's robber about 你爹贵姓
sha
} {
#if (@rest_go_num<=%numitems( @laststeps)) {
#show 乱入后恢复路线中,耐心等待哦。。。
gan che to %item( @laststeps, @rest_go_num)
look
} {
//rest_go_num初始值为1,所以这种情况表明已到目的地
ok
#t- hubiao_placeluanru
#if (@go_num >0) {
#t+ hubiao
#t+ hubiao_place
look
[email=go_num=@last_go_num]go_num = @last_go_num[/email]
#show 护镖途中信息 恢复后 @go_num @now_place
#timer on
#ts 2
} {
//如果最后查找的时候正好乱入到伙计这里,
//需要走开一步再走回来
#if (%numitems( @laststeps)=0) {hbgem 1}
}
}
} |
|