xufan 发表于 2016-8-13 11:49:26

也许是最小巧的迷宫机器人(zmud7.21测试成功)

本帖最后由 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

fengyun 发表于 2017-3-24 16:29:17

直接载入即可运行,非常实用。

fengyun 发表于 2017-3-24 16:31:07

请教一下,这里是不是还有几个问题,
thisback是否需要把类似northwest这些方向的反向给加入?
另外,就是如果遇到拦路的如何处理。

xiaocao 发表于 2017-3-24 16:31:35

我要是知道路径要他干嘛

fengyun 发表于 2017-3-24 19:57:39

#ALIAS opdir {#if @gonext=east {thisback=west};#if @gonext=west {thisback=east};#if @gonext=north {thisback=south};#if @gonext=south {thisback=north}
这个机器人是这样做反向的,我认为应该把其它的对应关系也加进去。
页: [1]
查看完整版本: 也许是最小巧的迷宫机器人(zmud7.21测试成功)