北大侠客行MUD论坛

 找回密码
 注册
搜索
热搜: 新手 wiki 升级
查看: 10446|回复: 15

我的遍历办法[zmud 721]

[复制链接]
发表于 2009-12-6 09:01:40 | 显示全部楼层 |阅读模式
和各位高手讨论以下哈。

比如得到一个地点 少林走廊
1.所有少林走廊房间号找到
2.一个一个walk过去
3.如果找不到就得到全少林房间一个一个walk

如果单房间就搜索周围 n个房间一个一个walk

再加上一个定位的方法,我定位只看房间名
1、如果房间名字唯一当然定位成功
2、如果不唯一,判断路途中有没有走错路,没有走错也算定位成功,这样一般迷宫都没有问题,就是随机迷宫没有办法

[ 本帖最后由 oolong 于 2009-12-7 12:36 PM 编辑 ]
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2009-12-6 09:11:48 | 显示全部楼层
原帖由 oolong 于 2009-12-6 09:01 AM 发表
和各位高手讨论以下哈。
我做了个mr机器人,大概40k/hour。
比如得到一个地点 少林走廊
1.所有少林走廊房间号找到
2.一个一个walk过去
3.如果找不到就得到全少林房间一个一个walk

如果单房间就搜索周围 n个房 ...

机器人发上来测试一下 如果可以的话 这将是北侠新人的福音啊

[ 本帖最后由 grla 于 2009-12-6 09:31 AM 编辑 ]
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2009-12-6 09:22:17 | 显示全部楼层
不错
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2009-12-6 12:48:25 | 显示全部楼层
顶!!
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2009-12-6 18:49:18 | 显示全部楼层
主要是我也不知道什么算法,只能全部走一遍,
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2009-12-6 20:13:57 | 显示全部楼层
这个机器人发上来应该会被icer干掉吧。
超过10个房间地图数据?
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2009-12-6 20:35:43 | 显示全部楼层
支持,哪里有全部房间的数据?
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2009-12-6 20:50:48 | 显示全部楼层
不错,能挂住就行了
可惜慕容被改了,杀手帮被改了,房间放物品数量也被改了,要不然就爽歪歪了!嘿嘿
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2010-1-5 13:58:39 | 显示全部楼层
我是先走房间名,走完了后如果没找到,搜索附近的@range范围的房间。
        #var room_list_idx 1
        #var room_list_zone_idx 1
        #var room_list_count %numitems( @room_list)//房间名搜索结果
        #var room_list_zone_count %numitems( @room_list_zone)//整个区域的房间
        #var room_list_temp {}
        #while (@room_list_idx<=@room_list_count) {
          #var roomfrom %item( @room_list, @room_list_idx)
          #while (@room_list_zone_idx<=@room_list_zone_count) {
            #var roomto %item( @room_list_zone, @room_list_zone_idx)
            #var pathfromto %pathfrom( @roomfrom, @roomto)
            #if %numitems( %pathexpand( @pathfromto))<@range {#additem room_list_temp @roomto}
            #ad room_list_zone_idx 1
            }
          #ad room_list_idx 1
          }

加上描述定位能好一点。
另外对于迷宫我特殊处理了一下。定位失败就看下是不是迷宫,如果是迷宫就读取,预设的路径走出来。
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2010-1-5 15:06:09 | 显示全部楼层
我觉得关键你是想怎么遍历的,是要跨区域遍历?还是区域内遍历?是要全地图遍历还是一定步深范围内遍历?
不同遍历方式效果都不一样,个人感觉区域内全地图遍历要一个高效算法比较麻烦,因为每走一步你都要查看房间内是否有符合要求的npc,这个至少要消耗0.5秒。
我想是不是可以用多步触发来解决这个问题?触发1是房间名,触发2是方向,触发3是一个任意语句,如果是你想要的npc记录该房间,如果是下一个房间名停止本触发,我不知道这个实现是否合理?这样子做是不是效率能高一点,至少走路的时候不用停下来,一个区域估计2-3秒内走完,然后根据触发算路径走路。
对于一定步深范围内遍历一定要做跨区域遍历,如果你是一定步深范围内遍历还限制区域肯定会出问题,因为这些情况除非wizard对这个npc强制做了区域限制,否则npc随即走动肯定会走出你设定区域的。这时候我觉得还是有迷宫遍历比较好一点,你选定一个方向优先级,按照一个方向一直走,走到底再向上递归找次优先方向,一直遍历完所有优先级就完成整个走动,迷宫最好先过滤特殊处理。对npc确定考虑还是用多步触发来确定,不要单步触发延时确定,这样子效率应该会比较好。
不过个人对以上两个想法的算法支撑度要求比较高。仅仅抛砖引玉

[ 本帖最后由 seagate 于 2010-1-5 03:07 PM 编辑 ]
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|北大侠客行MUD ( 京ICP备16065414号-1 )

GMT+8, 2024-11-2 01:21 AM , Processed in 0.011687 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表