深入浅出制作全自动Mud机器人-遍历
Script脚本
1
帖子
1
发布者
11
浏览
-
在Mud机器人中遍历其实有两种含义。
第一,依次经过所有给到的房间。
第二,依次经过给到的路径,在需要停止时暂停。
这里主要讨论第二种。
之前说过,每个移动是一堆和移动相关的判断函数的集合。
这里就是要实现继续移动或中止的判断。
参考我的core/zone.js,遍历而实现代码是
App.Zone.Finder = function (move, map) { wanted = App.Zone.Wanted move.Option.MultipleStep = wanted.SingleStep != true move.OnRoom = function (move, map, step) { let item = wanted.Checker(wanted) if (item) { wanted.Name = item.GetData().Name wanted.ID = item.IDLower if (map.Room.ID) { wanted.Loc = App.Map.Room.ID Note(wanted.Target + " @ " + wanted.Loc) } } } move.OnArrive = function (move, map) { if (wanted.Loc) { App.Map.FinishMove() return } wanted.Next(map, move, wanted) } }很明显,这个Finder是用App.Zone.Wanted作为选项,对move进行了初始化。
这里覆盖了两个方法
- move.OnRoom 经过房间(房间信息结束)的触发
- move.OnArrive 移动结束的触发。
主要是因为可以多步移动。
代码使用 App.Zone.Wanted.Checker来判断房间中是否有遍历目标。
如果找到目标,则遍历结束(App.Map.FinishMove)。
是一个很标准的任务遍历模型。
-
J jarlyyn 被引用 于这个主题