找回密码
 点一下
查看: 798|回复: 5

问个深度点的问题,达人进..

[复制链接]
发表于 2012-2-27 15:41:47 | 显示全部楼层 |阅读模式
未命名2.jpg

RT

图中的步兵想攻击中间的女巫,如何在判断步兵攻击时与女巫之间的路径(有建筑)并不能达到,

求简单的判断
发表于 2012-2-27 18:40:43 | 显示全部楼层
让单位走进去……走不进去的就是打不到的……
回复

使用道具 举报

发表于 2012-2-28 00:52:00 | 显示全部楼层
每过0.01秒在步兵周围创建N个马甲,然后检查马甲于马甲之间的间隔。
大于一定数值就判定为马甲错位,那么就是有建筑占地方了。
回复

使用道具 举报

发表于 2012-2-28 20:56:01 | 显示全部楼层
算是模拟寻路嘛喵.......

以女巫为中心,组成点阵~
□□□◇◇◇□□□
□□◇◇□◇◇□□
□□□◇◆□◇□□
□□□□◇◇◇□□
□●□□□□□□□

□ -- 空地
◇ -- 房子等等
◆ -- 女巫
● -- 步兵

可以是方形的,圆形也无所谓喵~

然后进行宽度优先搜索~从女巫或者步兵开始都无所谓~
用一个队列保存点~初始队列中存在搜索的起始点~
然后循环,每次都从队列中取出一个点,直到队列为空则退出循环~

然后根据取出的这一点,向四周的点进行扩张,如果四周是可通行的,则将那个点也加入队列~
已经被搜索过的点不会重复入队的说~
□□□      □●□
□●□ → ●●●
□□□      □●□

□□□□      □□□□      □□3□
□□□□      □□2□      □323
□□1◇ → □21◇ →  321◇
□□◇□      □□◇□      □3◇□

直到某一次循环过程中,某一个点包含步兵(从女巫开始搜索)或者女巫(从步兵开始搜索),则表示存在通路,且搜索到的是最短路~
如果没有发现通路循环就结束了,则判定无法抵达~

当然以上是基本的原理~嘛,还素有些事情要讲清楚的说~
考虑到war3的运算速度比较慢,而且队列之类的处理起来也好麻烦,所以这里可能需要限定搜索的范围在 n*n的点阵范围内,或者限定搜索的步数~
当然这样做会碰到某些情况下比如绕超远路拐进来的被处理为没有通路~所以请自行处理这个范围~

嘛,war3自带的寻路算法其实也是类似思想的算法,不过其能够有资本搜索全地图呢~
回复

使用道具 举报

发表于 2012-2-28 22:48:37 | 显示全部楼层
  噗哩 这够可怕的
回复

使用道具 举报

发表于 2012-2-29 09:55:25 | 显示全部楼层
好卡怕……
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-10-6 12:02 , Processed in 0.094914 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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