|
本帖最后由 xufan 于 2016-8-13 03:59 AM 编辑
走迷宫什么的最费劲了 只好做个迷宫机器人
附件是class,在zmud--setting--import--script(ASCII)--固定迷宫专用。txt
使用说明:
1.你需要知道迷宫入口和出口的判断信息,做一个trigger,内容是finish=1
2.在迷宫入口处输入clsall,情况上一次的数据
3.输入gonext=你要走的第一个方向,默认是south
4.输入speed= 默认800
5.输入gom 开始
需要调用的参数说明
#var finish 0 //迷宫入口,出口,停止机器人标记
#var gonext south //告诉机器人下一步走哪个方向,如果入口第一步不是south需要手动调整
#var thisback {} //当前房间的出口(就是来的方向)
#var mazein {} //进入迷宫的路径数据库
#var mazeout {} //返回迷宫的路径数据库
#var room {} //当前房间信息数据库
#var tem {} //临时数据
#var info {} //当前房间信息
#var n {} //gogo里面用来记录房间step的,gom里面没用到
#var speed 800 //走路速度,单位毫秒,最高50通过,再快zmud会抽筋
下面是代码和分析:gom
finish=0
#while @finish=0 {mazein=%push( @gonext, @mazein) //将当前方向存入进迷宫数据库
#exec @gonext //走一步
#wa @speed //等一下,很重要,不然机器人会发狂
opdir //调用方向变换“函数”
mazeout=%push( @thisback, @mazeout) //讲当前出口存入出迷宫数据库
#if @finish=1 {#break} //出迷宫或者停止迷宫标记
info=%additem( @thisback, @info)
info=%delitem( @thisback, @info) //讲进来的方向调到最后以免机器人来回走
gonext=@info.1 //告诉机器人下一步走哪里
room=%push( @info, @room) //记录当前信息到迷宫数据库
#while %numitems( @room.1)=1 { //如果当前房间是死路,执行下面的循环
#exec %pop( room) //回走一步,并从迷宫数据库删掉当前房间信息
#wa @speed
tem=%pop( mazein)
tem=%pop( mazeout) //删掉当前进出迷宫路径信息
tem=%pop( room) //取出回走的房间信息
gonext=%pop( tem)
gonext=@tem.1 //将走过的方向删除,并告诉机器人下一步走哪里
room=%push( @tem, @room) //将当前房间更新后的信息存入迷宫数据库
}
}
#echo %ansi( blink, high, yellow)恭喜!你成功走出了迷宫!!!
感觉这已经是最精干的迷宫代码了
北大侠客行MUD,中国最好的MUD |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|