寻路:介绍一下小范围寻路的方式

要你走到个目标你如何办?1.先想好如何走
2.管它呢?先靠近再说
你要么是预先想好要么是凭借你直觉预先想好电脑工作思路方法有很多可是直觉电脑就不能和你比了直觉拆开来是如何样呢?
起步位置、位置 2哪个离目标近走哪个听起来好像挺简单实际上还有点问题这里近并不是空间直线距离而是通常情况下从那个位置走到目标距离或者说步数
例子:
__O__
_+_
_+_+_
__P__
_:地板 +:桌子 O:目标 P:You 如果这些符号伤害了你感情那么很对不起你会向上走吗?只有两种可能!你想翻桌字;你是个思想叛逆那么你为什么要向左或右走呢?很简单从左或右边离目标更近
尽管空间直线距离变远了但它离目标确实近了让我们数出走到目标步数(当然你不能翻桌子):
21012
3+3
4+8+4
56765
发明数字人应该成为神问题变得多么简单明了我们只需证明:只要向着距离目标需要步数更少方向前进定能到达目标当然有个前提:如果点能走到目标它周围定还有个离目标更近
我不知道怎样很好证明以上结论但相信你和我样对它深信不疑假如你怀疑请不要相信本文其它内容
个奇怪+混在里面是不是很麻烦如何办呢?不如这样:
253 254 255 254 253
252 000 000 000 252
251 000 247 000 251
250 249 248 249 250
啊哈0:多美妙数字现在可以说只要直向着更大数字走定能找到目标前提:实际和目标连通
把它扩展下:快地图中间是255依次铺开记录着到中间距离(255-当前值)在这块地图任何我们都知道如何走到中间
… 254 …
254 255 254
… 254 …
如果我现在说切都结束了你会不会发现什么问题?这好像只能走到中间也许你自己有个答案:把目标看作中间就可以了我不能说你错但是有更合理思路方法来利用这种数据
这种数据对于传统战棋游戏再合适不过了首先我们来说说传统战棋游戏
首先你操作个战斗单位移动你要先知道它可以行走几步在几步内可以到达范围然后它走到该范围内你指定位置
以单位为目标距它 n步以内 范围=从目标出发 n步以内所能到达范围我不想证明你应该可以理解
从战斗单位位置走到指定位置路线可有它反向路线再反向得到
实际上我通过些尝试得到结论这种类型数据可以作为即时战略预处理数据可以大大提高寻路效率当然不是直接使用以后再说吧

这种数据计算可参照如下伪代码

   距离(目标x,目标y)=255\'其它均归零
For STEP= 1 to 步数
For a = 目标x-STEP to 目标x+STEP
For b= 目标y-STEP to 目标y+STEP
IF 周围最大距离(位置(a,b))〉距离(a,b) THEN
   距离(a,b)=周围最大距离(位置(a,b))-1
  END IF
NEXT b
NEXT a
NEXT STEP

希望对你有帮助^_^
生物LIGHTS随时侯教OICQ:1905202 E_MAIL:[email protected]
Tags:  寻路

延伸阅读

最新评论

发表评论