一个角色在升级过程中不仅需要有足够的经验值,而且需要师门技能达到的等级才可以升级,所以师门技能是必须学习的。然而师门技能的学习顺序是有技巧的,不能想当然就直接学习某个技能,这样柜增加我们的投入。比如大唐官府的师门技能十方以及一击的学习先后就不能乱来,不同的等级有不同的学习方法。那么这两个技能的学习先后应该是怎么样的呢?一位电脑鬼才玩家利用编程解决了这个难题。
其实这个问题只要规划了算法就有解。站在技能全是150级的路口,每一次抉择的时候,选择都是的。那么只要逐步的作比较,就能得出解。
首先要把文件调好格式,创建好十方和一击两个矩阵,并读取进来。列等级,第二列伤害值,第三列经验,第四列金币。这里值得注意的是,在后面运算的时候,会报错。所以两个矩阵的第31行,都手动加了一个金币9999的行。目的是比较效率低过对方的前30。然后创建一个空的矩阵来接收结果。
因为从150点满两个技能需要60次,这60次抉择就要给60行,然后除了抉择列,再加一个效率列,方便后面作图。
接下来就要写比较函数。这里意思就是,如果十方的总的消耗小于一击的,就在十方的矩阵去掉行,同时在抉择矩阵的那一行中抉择选1,效率等于抉择到十方的效率。反之,就是一击矩阵消一行,选0,效率等于抉择到一击那的效率。
这里用了循环遍历,所以抉择矩阵的行用i代替,因为矩阵逐步会减少,所以每次都是减行。这里比较的时候,给了十方一个1.1的惩罚系数。为什么呢?因为十方是大开大合。
如果有两种选择,种是点三次100万加1伤害,第二种是300万加3伤害,你肯定会选个对吧,因为早学习早享受,所以说十方每次消耗大,不能早享受,需要比较时被惩罚,但不影响算数结果。
写完比较函数之后,就要在外面套一个if的循环遍历,执行60次比较。为什么要返回去加一个31行呢?因为当十方的第30次都点完了之后,再就比无可比,程序就要报错。那么有人会说,我就不用逐行,写另外的来规避已选择的可以吗?可以,但是那个要复杂的多。你想一下,如果现在十方前10次被用过了,一击前5次被用过了,还是两个完整的矩阵来比,就要定义更多的变量出来,不方便。
这里比较的方法是这样定义的。因为根据70亿经验从159提升到175,可以给号加2000块钱,600亿经验和千亿经验等同,刷400亿可以换一次千亿机会,但千亿在跌价,400亿能换来1万多的收益。我把经验值和的比值设定为30比1,也就是说30万经验等于1万金币。
因为十方每次要和为官之道一起冲,所以真实消耗要乘以2,然后执行60次遍历。
比较结果出来了, 1是十方,0是一击,后面是带来1点伤害,需要的综合游戏币(包括换算的经验)。两个矩阵也只剩下不存在的181级技能,但是目前这个读起来还很不方便。能标注技能等级。
结果就在这里了。先冲十方到155级,然后补一击到154级,再十方156级,一击155级,点180之前一击要到175级。