chans 发表于 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 编辑 ]

chans 发表于 2010-7-26 15:44:55

我记得看过一个帖子。说遍历的时候,如果进不去,look 一下也可以。
是不是系统只记录路径呢?比如上面的帖子

要做路径。怎么做?mapper高手来告诉下。不胜感激。

maper 发表于 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......这样肯定会重复走过一些房间的,但是没有办法。

maper 发表于 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。
当你知道你的起始房间和终点房间的时候,就要找到一条最短路径,然后走过去。
上面的图是很简单的,如果地图很大,并且有些房间相互连通成环路,这个时候找最短路径还是要靠计算的。

chans 发表于 2010-7-27 00:47:16

明白。这个就是以前数据结构做的遍历。做一个树。然后做深度优先或者广度优先搜索。

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

也就是体现在数据结构上。
好多年没接触这个了。呵呵。以前的东西忘光了。回头拿那个数据结构在看看

chans 发表于 2010-7-27 00:48:33

你给的提示很好。我结合 addtr 和deltr的功能。可以做的比较完美的机器人。
理论上人能做到的都可以写成程序。
受益匪浅。感谢感谢。

oolong 发表于 2010-7-27 18:11:26

原帖由 chans 于 2010-7-27 12:48 AM 发表 http://edu.pkuxkx.net:8082/forum/images/common/back.gif
你给的提示很好。我结合 addtr 和deltr的功能。可以做的比较完美的机器人。
理论上人能做到的都可以写成程序。
受益匪浅。感谢感谢。

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

还有如果HYD的NPC走开了,就在当前位置处搜索周围几个房间,一个个走过去很快啊。

dgda 发表于 2010-7-28 18:12:29

原帖由 maper 于 2010-7-25 09:27 PM 发表 http://www.pkuxkx.net/forum/images/common/back.gif
估计你是要做一个天机老人找东西的任务吧?
建议还是先画出整个mud的地图吧,这样子可以得到任意两个房间的路径,能够实现自动行走,比你这样用alias要好很多,不会迷路。
关于画地图可以搜索本论坛。

mapper大大,我按你的教程用zmud 7.21已经画出整个MUD的地图了,不过残念,这样的方法,即使做出来了全auto机器,同一时间也只能挂一个ID... ...
页: 1 [2]
查看完整版本: mush关于遍历难题问题,感谢maper,请在帮下忙