[进阶硬核] 黄骑首次充电机制详解(更新至懒人总结版)
导语因为排版的问题,正文手机容易看不懂,请务必用电脑阅读!!!
欢迎大家交流讨论。最近有点忙,带四人以下的版本的充电可能要等之后有时间了更新
懒人专版
快排
首先我们需要了解这个游戏中的排序机制,也就是快排。本文的快排与 [@davecat] 大佬帖子有一定的出入。
简单的来说,我们可以将角色看成一个数组序列,A,[]中的值是需要排序的目标,比如magic str,tp,hp等等
1:首先选取一个值,记作index,pcr取的index=int((left+right)/2),因为是整型,所以舍去小数点后的部分,可以简单地理解为做下取整运算。然后记t=A
按照上面的数组序列,index=int((0+4)/2)=2,t=A=A=2
2:接着分别从两边遍历,将小于t的放在左边,将大于t的放在右边。代码中具体实现就是k从0:4遍历,j从4:0遍历,若A<t,则不用交换位置,k++,继续循环;若A>t,不用交换位置,j--,继续循环。然后将A和A交换位置,k++,j--。重复上述操作,直到k>j。
按照上面的数组序列,k=0时需要交换;j=4时不需要交换,j=3时需要交换。于是A和A交换位置,变成A,然后k变为1,j变为2。进行下一轮循环。
k=1时,需要交换;j=2时也需要将交换,于是A和A交换位置,变成A,然后k变为2,j变为1。因为此时k>j,所以跳出循环。
3:以k和j将上述数组分成两部分,重复步骤1和2。也就是所谓的递归。
按照上面的数组序列就是分成A和A,再进行排序,变成A和A,最后结果是A
当然实际写代码的时候还有一些防止bug的判定,例如当数组中只有一个值的时候直接跳出循环
判定距离
看过我之前帖子的应该知道角色有攻击距离以及受击半径125等数值。另外初始我方角色两两相距200,例如一号位到五号位之间的距离是800。
这边让我们引入判定距离这个概念,判定距离描述的是对于同一个参考点,初始不同角色的攻击距离相对于这个参考点的位置。根据判定距离的大小可以判断谁先停谁后停。
为了方便理解,这边举一个例子。
我方:镜子(805),星法(755),黄骑(405),空花(130),布丁(125)
如果我们以布丁作为参考点,每一个角色的判定距离为
镜子:805-800+125
星法:755-600+125
黄骑:405-400+125
空花:130-200+125
布丁:125-000+125
同样的以黄骑为参考点,那么星法的判定距离就是755-200+125,而布丁则是125+400+125
因为参考系相同,所以根据判定距离这个值大小可以很明显的看出谁先停谁后停。
黄骑充电机制
了解了快排,和判定距离的概念,我们就可以开始聊聊黄骑的充电机制。感谢 [@FledgingxDestined丶] 大佬提供的部分思路,黄骑充电有如下要求:
黄骑在开技能的时候才调用快排计算
1:比黄骑先停下的角色tp>0,这个tp值受到tp上升和是否被敌方攻击的影响。比黄骑后停的角色tp=0,因为判定在动作回复tp之前,所以黄骑的tp=0。
2:因为黄骑是充我方,所以我们输入顺序应该变为一号位,二号位,三号位,四号位,五号位。
3:调用快排运算,取tp最小的那一个
补充一下临界角色:
805 雪(镜子),205禊(炸弹人)
注记
本文一开始并没有考虑到敌方也就位时,一号位受到攻击,tp更高的情形。
黄骑四号位跟五号位时,由于此时敌方也已经就位,如果在黄骑充能之前,我方一号位被打,那么肯定是一号位的tp值大于三,最后结果就是上文例子中tp上升一>三的情形。
具体就跟停下时间和技能吟唱时间之类的有关。
页:
[1]