标题: 问题:关于曹操传中的寻路和挡格率 [打印本页]
作者:
lufy 时间: 2010-6-2 12:22 标题: 问题:关于曹操传中的寻路和挡格率
最近因为工作不太忙,所以在试着研究用flash做曹操传式的战旗游戏
具体请看我的帖子
用AS3.0开发flash版曹操传-初级
已经实现了一些简单的功能,但是出现了几个问题
请高手们帮忙解答一下
曹操传中寻路的时候,旁边有敌人在的话,就走不过去了
所以,才有了赤兔马的恶路突击
这个地方,曹操传中是如何处理的?
移动范围是如何限制它缩小的
另外曹操传中挡格率的计算公式是什么?
[ 本帖最后由 lufy 于 2010-6-3 15:36 编辑 ]
作者:
godtype 时间: 2010-6-2 12:35
突击移动的代码在437D59
命中率其实就是挡格率,命中率数值不发生的话,就会被档格,代码在43B50D
可以看一下。
作者:
lufy 时间: 2010-6-2 12:46
原帖由 godtype 于 2010-6-2 12:35 发表
突击移动的代码在437D59
命中率其实就是挡格率,命中率数值不发生的话,就会被档格,代码在43B50D
可以看一下。
感谢回答,但是本人对汇编什么的一窍不通
虽然知道了代码位置,怕也看不明白
其实,我倒不是研究突击移动,我是想知道曹操传寻路的时候,有敌军在的时候,是怎么判断和限制的,因为是自己写代码,如果这里知道的话,突击移动的时候,把这个限制去掉就可以了
作者:
godtype 时间: 2010-6-2 12:52
突击这个我也没有弄明白,只是知道代码位置,或者等其他高手回答吧。
作者:
lufy 时间: 2010-6-2 13:17
原帖由 godtype 于 2010-6-2 12:52 发表
突击这个我也没有弄明白,只是知道代码位置,或者等其他高手回答吧。
挡格这里是解决了
物理攻击的命中率
X代表我方的爆发力,Y代表敌方的爆发力。R表示命中率
if (x>2*y)
r=100;
else if(x>y)
r=(x-y)*10/y+90;
else if(x>y/2)
r=(x-y/2)*30/(y/2)+60;
else
r=(x-y/3)*30/(y/3)+30;
注:手套和盾有加成效果。比如敌人有辅助防御15%的宝物,那么最终的命中率是r-15
剩下的,就是寻路了,只要知道了,寻路的时候遇到敌军是如果加限制的话,就能解决了
作者:
周瑜 时间: 2010-6-2 21:11
我认为用的是宽度优先,旁边有敌人的话,剩余步数直接归零,不再入队列。
作者:
lufy 时间: 2010-6-3 08:21
原帖由 周瑜 于 2010-6-2 21:11 发表
我认为用的是宽度优先,旁边有敌人的话,剩余步数直接归零,不再入队列。
感谢周大关注
但是还是不大明白具体做法
比如下面
空地 空地 我军 空地 空地
空地 敌军 空地 敌军 空地
空地 空地 空地 空地 空地
我军应该只能走到两个敌军中间的位置吧
这个按照自己的想法,花点时间总结一个算法倒是也能,但是主要是想看看曹操传中是如果做的
作者:
司徒苍月 时间: 2010-6-3 11:23
我认为可以视作敌军周围四向直接耗尽移动力,突击移动时,则消耗对应移动力,以此达到寻路效果
例如你所说的
设我军移动力为x,此地移动力消耗为y,不可移动处为#
空地(y) 空地(x) 我军(0) 空地(x) 空地(y)
空地(x) 敌军(#) 空地(x) 敌军(#) 空地(x)
空地(y) 空地(x) 空地(y) 空地(x) 空地(y)
[ 本帖最后由 司徒苍月 于 2010-6-3 11:28 编辑 ]
作者:
lufy 时间: 2010-6-3 11:41
原帖由 司徒苍月 于 2010-6-3 11:23 发表
我认为可以视作敌军周围四向直接耗尽移动力,突击移动时,则消耗对应移动力,以此达到寻路效果
例如你所说的
设我军移动力为x,此地移动力消耗为y,不可移动处为#
空地(y) 空地(x) 我军(0) 空地(x) 空 ...
感谢关注,但是我还是再强调一下吧
我问的不是突击移动怎么做,而是周围有敌人的时候,如何限制移动
曹操传中有敌军在的时候,移动范围就缩小了
主要是限制这里不清楚怎么弄,突击移动我的想法就是去掉这个限制就可以了
[ 本帖最后由 lufy 于 2010-6-3 11:46 编辑 ]
作者:
司徒苍月 时间: 2010-6-3 13:01
移动范围即当前移动力耗尽所能达到的区域,这样说明应该没有什么问题
所以我单纯的从移动力的消耗上来解释移动范围,尽量降低算法复杂度
对于玩家来说,他们不会考虑你的算法如何,只要达到相同效果即可
[ 本帖最后由 司徒苍月 于 2010-6-3 13:02 编辑 ]
作者:
lufy 时间: 2010-6-3 13:29
原帖由 司徒苍月 于 2010-6-3 13:01 发表
移动范围即当前移动力耗尽所能达到的区域,这样说明应该没有什么问题
所以我单纯的从移动力的消耗上来解释移动范围,尽量降低算法复杂度
对于玩家来说,他们不会考虑你的算法如何,只要达到相同效果即可
从移动力来算移动范围当然没有错,事实上,我现在的算法也是这样,并且已经实现了,具体可以下载我的帖子的附件测试
可关键在于,旁边是敌军或是我军的移动范围是不一样的,不是吗
上面的问题,我军应该是无法从两个敌军中间穿过的,
但是如果把两个敌军换成我军的话,则可以通过了
我的问题就在于这里是如何判断和搜索的
[ 本帖最后由 lufy 于 2010-6-3 13:37 编辑 ]
作者:
lufy 时间: 2010-6-3 13:38
不好意思,理解错了
苍月所说的括号里的是所消耗的移动力啊
但是这样一来,上面的问题我军左右也不能移动了
作者:
司徒苍月 时间: 2010-6-3 14:09
原帖由 lufy 于 2010-6-3 13:38 发表
不好意思,理解错了
苍月所说的括号里的是所消耗的移动力啊
但是这样一来,上面的问题我军左右也不能移动了
可以啊,我设的移动力x,那么移动范围就是x被耗尽时,所能走到的范围,如那图所示,即左、右、下,三格可行
作者:
司徒苍月 时间: 2010-6-3 14:16
算法以宽度优先,设我军坐标为(m,n),移动力x,敌军坐标(o,p)
先算宽度,即从(m,n-1)开始计算,(m,n-2),(m,n-3)。。。直到x耗尽,为上边线
同理从(m,n+1)开始计算,(m,n+2),(m,n+3)。。。直到x耗尽,为下边线
。。。。。。。。。。(也就是n^2级循环)
敌军所在坐标消耗移动力255(以二进制计算),即不可移送,其四周(o-1,p),(o+1,p),(o,p-1),,(o,p+1)消耗移动力为x
即可实现你所需要的算法
再细化,我军分我军、友军,敌军为敌军A,敌军B(可相互攻击)。。。。。。。以不同势力代码区分即可
[ 本帖最后由 司徒苍月 于 2010-6-3 14:18 编辑 ]
作者:
lufy 时间: 2010-6-3 14:33
原帖由 司徒苍月 于 2010-6-3 14:16 发表
算法以宽度优先,设我军坐标为(m,n),移动力x,敌军坐标(o,p)
先算宽度,即从(m,n-1)开始计算,(m,n-2),(m,n-3)。。。直到x耗尽,为上边线
同理从(m,n+1)开始计算,(m,n+2),(m,n+3)。。 ...
原来如此,多谢详解
我加入游戏试试看
作者:
lufy 时间: 2010-6-3 15:09
算法已经完成了,
不过因为挺长时间没有玩曹操传了,觉得有点别扭,公司电脑里没有曹操传
熟悉的朋友看看曹操传中下面这种情况算正常吗
我记不太清楚了
图片附件:
1.JPG (2010-6-3 15:09, 13.43 K) / 该附件被下载次数 158
http://xycq.org.cn/forum/attachment.php?aid=95314
作者:
司徒苍月 时间: 2010-6-3 15:10
从你的效果图来看,你所需要的目的已经达到了
作者:
lufy 时间: 2010-6-3 15:26
原帖由 司徒苍月 于 2010-6-3 15:10 发表
从你的效果图来看,你所需要的目的已经达到了
那就结案了,非常感谢
欢迎光临 轩辕春秋文化论坛 (http://xycq.org.cn/forum/) |
Powered by Discuz! 5.0.0 |