北大侠客行MUD论坛

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

地图区域遍历算法求助

[复制链接]
发表于 2009-8-7 16:34:00 | 显示全部楼层 |阅读模式

                 图一


                             图二

       最近在写地图区域遍历,碰到一些困难,像各位大大求助。
       用zmud画好地图后我已经可以得到各个房间的出口信息,比如房间1通往房间2的方向是west。现在想写个地图区域遍历,就是从任意一个房间开始自动遍历一定距离内的所有房间。
       现在对于图一这样的没有相互连通的房间已经可以搞定了,从红色房间开始可以走遍周边所有的房间。思路是进入一个房间后检索这个房间没有走过的方向,从没有走过的方向中选一个再走下去,如果该房间的所有的方向都走过了或者遍历距离到了就返回。
       但是对于图二这种有些房间相互连通的就会出现漏掉某些房间的现象,不知道像这种情况应该采用什么样的算法进行遍历?要求重复经过某个房间的次数不要太多,不能漏掉某些房间。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2009-8-7 16:43:38 | 显示全部楼层
顶一下。

等着看答案。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2009-8-7 16:45:53 | 显示全部楼层
考虑对回环路径单独建立数据模型,毕竟这里回环路径比较少。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2009-8-7 17:09:51 | 显示全部楼层
原帖由 ddid 于 2009-8-7 04:45 PM 发表
考虑对回环路径单独建立数据模型,毕竟这里回环路径比较少。

就是把环路改成不是环路的?这样是很容易做到的,但这样在遍历找npc时貌似不大好啊!
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2009-8-7 17:59:18 | 显示全部楼层
右手原则?比如设定一个顺序east,southeast,south,southwest,west,northwest,north

遇到岔路口就先走east,走到尽头返回,返回后走south,走到尽头再返回
能保证所有的地方都走完,但不一定是最优的
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2009-8-7 18:14:55 | 显示全部楼层
这是什么…………………………
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2009-8-7 18:24:18 | 显示全部楼层
想了半天,没想到什么好办法……

个人感觉,问题的关键是,无法在一进入房间时,就判断出是否处在回环路径中。除非用数据库,但每走一步查询一次数据库,对计算速度影响较大。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2009-8-7 19:06:32 | 显示全部楼层
广度优先遍历
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2009-8-7 20:07:42 | 显示全部楼层
原帖由 whuan 于 2009-8-7 05:59 PM 发表
右手原则?比如设定一个顺序east,southeast,south,southwest,west,northwest,north

遇到岔路口就先走east,走到尽头返回,返回后走south,走到尽头再返回
能保证所有的地方都走完,但不一定是最优的

比划了一下这个貌似可以,不过右手是相对于进入该房间的方向而言的,比如进入房间是east,那下一个应该走southwest,再是south
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2009-8-7 20:12:11 | 显示全部楼层
原帖由 duno 于 2009-8-7 07:06 PM 发表
广度优先遍历

对这个不熟悉,不过我看了这个演示动画,似乎不大适用于地图遍历吧?http://218.65.59.6/xinwen3/news/kj/flash/2004/0426/1300.htm
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-17 07:43 AM , Processed in 0.013320 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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