北大侠客行MUD论坛

 找回密码
 注册
搜索
热搜: 新手 wiki 升级
12
返回列表 发新帖
楼主: chans

mush关于遍历难题问题,感谢maper,请在帮下忙

[复制链接]
 楼主| 发表于 2010-7-26 15:41:04 | 显示全部楼层
是不是这么理解。遍历就是走了一圈呢?
如果我做个alias 把一个地方都走了一遍。是不是就是遍历了?
不过你这个做了一个栈,每次弹出一个方向指令。
比如我做的遍历  红色部分。
A  -----B -----C         DD      EE
         |                    |          I
D ------E------F-----------AA ----BB
         |                     |        |
G------H-------I           CC    FF
         I
J-------K------L

是不是就是 E -> H  -> G  -> H  -> I  -> H  -> K  -> J  -> K  -> L 这么做呢?
这样重复好多。有没有好的办法?
个人感觉对变量有些误解




[ 本帖最后由 chans 于 2010-7-26 03:43 PM 编辑 ]
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2010-7-26 15:44:55 | 显示全部楼层
我记得看过一个帖子。说遍历的时候,如果进不去,look 一下也可以。
是不是系统只记录路径呢?比如上面的帖子

要做路径。怎么做?mapper高手来告诉下。不胜感激。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2010-7-26 18:44:23 | 显示全部楼层
|
A  -----B -----C              DD      EE
            |                            |          I
D ------E------F-----------AA ----BB
            |                            |         |
G------H-------I               CC    FF
           I
J-------K------L


先来说一下什么是遍历。
以上面的地图为例,上面的地图可以看做是mud里面的一个区域、城市、范围,这里我们当成是扬州城好了,现在你接到一个任务:有个小偷偷了只鸡,他现在在扬州城晃荡,你去把他抓来。
这个时候我们只知道小偷在扬州城,但不知道在具体的房间,所以只能采用遍历的方式来找,也就是从一个房间开始把一定范围内的房间都走一遍。
假设我们现在从房间A开始遍历,那么路径可能是A-B-C-B-E-D-E......这样肯定会重复走过一些房间的,但是没有办法。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2010-7-26 18:49:10 | 显示全部楼层
|
A  -----B -----C              DD      EE
            |                            |          I
D ------E------F-----------AA ----BB
            |                            |         |
G------H-------I               CC    FF
           I
J-------K------L


下面来说一下到最短路径行走。
也就是现在你站在房间A,你知道你要去的房间是FF,那这个时候最短的路径就是A-B-E-F-AA-BB-FF。你不必要先从房间A走到房间K,然后再绕回去FF。
当你知道你的起始房间和终点房间的时候,就要找到一条最短路径,然后走过去。
上面的图是很简单的,如果地图很大,并且有些房间相互连通成环路,这个时候找最短路径还是要靠计算的。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2010-7-27 00:47:16 | 显示全部楼层
明白。这个就是以前数据结构做的遍历。做一个树。然后做深度优先或者广度优先搜索。

换到游戏了。可以这么做。经常去的固定地方。可以结合alias ,直接定位,
如果是随机的NPC,那么就做遍历搜索。

也就是体现在数据结构上。
好多年没接触这个了。呵呵。以前的东西忘光了。回头拿那个数据结构在看看
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2010-7-27 00:48:33 | 显示全部楼层
你给的提示很好。我结合 addtr 和deltr的功能。可以做的比较完美的机器人。
理论上人能做到的都可以写成程序。
受益匪浅。感谢感谢。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2010-7-27 18:11:26 | 显示全部楼层
原帖由 chans 于 2010-7-27 12:48 AM 发表
你给的提示很好。我结合 addtr 和deltr的功能。可以做的比较完美的机器人。
理论上人能做到的都可以写成程序。
受益匪浅。感谢感谢。


个人感觉遍历不需要算法,按一条最佳路径走就行了。举个例子,
你把扬州的房间编号按顺序排成一个数列 1|2|3...
然后就%walk(1),%walk(2)...就可以了,这种在HYD中最合适。

还有如果HYD的NPC走开了,就在当前位置处搜索周围几个房间,一个个走过去很快啊。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2010-7-28 18:12:29 | 显示全部楼层
原帖由 maper 于 2010-7-25 09:27 PM 发表
估计你是要做一个天机老人找东西的任务吧?
建议还是先画出整个mud的地图吧,这样子可以得到任意两个房间的路径,能够实现自动行走,比你这样用alias要好很多,不会迷路。
关于画地图可以搜索本论坛。


mapper大大,我按你的教程用zmud 7.21已经画出整个MUD的地图了,不过残念,这样的方法,即使做出来了全auto机器,同一时间也只能挂一个ID... ...
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-16 07:14 PM , Processed in 0.009093 second(s), 12 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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