就随便拿个表情包当镇楼图吧QAQ
前言:
受UP主@ 讲故事的勺子啊啊啊的硬核原神系列视频的启发,本人对他在Github上的MATLAB 代码进行了初步改进和注释,并且将原本代码细分成了不同的函数,方便debug和编辑数据。发表这篇专栏也是为了给大家分享下我的改进和做一点微小的贡献。
MATLAB《从入门到放弃》:
考虑到大火儿可能对于MATLAB是啥都不太清楚,在这里就做一个简单的介绍。MATLAB严格意义上并不能算是一种编程语言,但是该软件是首屈一指的数学计算软件。各大院校的工科生大多都会使用这款软件去进行系统仿真和数值计算,考虑到我和UP主都是工科生,选择MATLAB作为计算工具无疑是较为自然的选择了。
Main(主文件):
作为main.m,我们需要在这个文件里设置各个子函数进行计算的参数并且将它们的结果汇总并写入。通俗点说,我们要设置计算哪位角色,他/她们携带的圣遗物(套装和圣遗物词条情况)和武器等。需要注意的是,函数的使用有顺序的要求,部分函数如GetRoleData 和GetWeaponData必须先于Damage_Noel_Ult运行。
main.m的简易截图
数据获取(GetXXX函数):
鉴于这三个函数的功能和结构差不多,就放在一块讲完吧。这三个函数的作用是根据我们选择的角色,武器,圣遗物套装去提取数据,返回成三个独立的vector。最后把这三个vector输入到穷举伤害计算器里。注释里标注了各个vector每项的值是什么,方便大家查阅和在伤害计算器里引用。(注:由于部分套装和武器的加成计算较为特殊,角斗士套和螭骨剑的受到伤害等,名字代号也会作为vector的一部分,便于在伤害计算器里使用if loop计算)
GetWeaponData简略截图,如果需要测试其他武器可以自行加入
圣遗物副词条穷举器:
这个函数所返回的矩阵是根据我们的输入圣遗物符合要求的副词条数目和角色生成的。这里沿用了UP主的穷举法,即通过移动所谓的“光标”穷举每个副词条出现的可能性。
注释较为详细的解释了代码的机制
圣遗物主词条穷举器:
主词条穷举比副词条穷举简单多了,由于数量较少,故此沿用了UP主的源代码,即全部手动列出。详情请看注释
主词条穷举生成器
主副词条融合:
这个函数会稍微复杂一点,考虑到大多数情况下主副词条的搭配种类过多,这里本人沿用了原up主的合成函数。大体思路为构建一个三维的矩阵。矩阵的结构如下:主词条(固定排列)+副词条(变化排列)为矩阵的前2维。然而考虑到矩阵相乘的复杂计算量,我沿用了UP主原来的三位矩阵的思路。第三维的变化为不同的主词条排列。
词条融合函数代码
结语:
上就写到这里吧,下会详细写到伤害穷举计算的函数和up主使用过的贪心算法。有什么不懂的小伙伴们在下面的评论区里留言啊。