查看: 1142|回复: 6
打印 上一主题 下一主题

[幻化攻略] 恭喜元魂珠独立版块开启

[复制链接]

2420

活跃

6214

人气

170

军饷

一呼百应

Rank: 11Rank: 11Rank: 11Rank: 11

积分
1432

再探北溟洗具直播大使土豪

跳转到指定楼层
楼主
发表于 2022-8-25 21:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式 来自:江苏

登录论坛,更多趣闻美图好福利!

您需要 登录 才可以下载或查看,没有帐号?注册

x
本帖最后由 可乐炸鸡能减肥 于 2022-9-28 06:10 编辑

恭喜元魂珠独立版块开启
应该是第十一个帖子?
忙毕业论文和秋招,看剧得时候,闲不住,把之前一直自己想要的功能写了一下。
目标:元魂珠品类多功能计算器
目前实现3个大类功能:
1  金钱计算
         军资、元宝、金、R 相互转换  用来计算成本等。
2 化雪丹相关计算
         化雪丹摆摊单价计算
         化雪丹使用(计算最大可以shift数量,避免shift时候提示溢出等情况,还得一个一个点,略显鸡肋,但些许有用)
3 元魂珠数值相关计算
          计算指定等级(能量等级)的成本
          输入指定的两个元魂珠进行融合,输出结果并计算总成本
          输入期望的累计融合点和元魂珠星级,计算当前环境下近似最优方案(近似,只能说近似具体是不是最优方案,我也不知道。。。脑子昏昏沉沉的)

但是由于我不会写前端,甚至web都不会。

写完之后,发现没有装java得不能运行,我用utf-8得汉字拿到win下用powershell执行也各种报错。
所以条件限制在了会用ide得,和用Linux、Mac装了java环境的人群。。。
然后。。。我写的代码,因为思路转变好多。里面有很多无用代码,写的太难看就不把源代码贴上来了,有能力的,有兴趣的 可以按我的算法实现一下,福利一下玩家们。
我在楼下贴上算法说明
计划等我把最近的事儿忙完再学学web,ui什么的,再重新改成大家都能用的exe文件,或者在我的云上弄个网页可执行的。



562

活跃

386

人气

0

军饷

以武入道

Rank: 4

积分
190
沙发
发表于 2022-8-27 13:11 | 只看该作者 来自:湖北
++++++++++++1

2420

活跃

6214

人气

170

军饷

一呼百应

Rank: 11Rank: 11Rank: 11Rank: 11

积分
1432

再探北溟洗具直播大使土豪

板凳
 楼主| 发表于 2022-9-28 06:24 | 只看该作者 来自:江苏
上面的内容里,说白了,最关键的就是第三个元魂珠数值相关计算,下的输入期望的累计融合点和元魂珠星级,计算近似最优方案

说明:
可能看到的路人会疑惑,明明合500,就是固定的几个公式哪来的那么多破破烂烂。

我说:我的目标是追求最优成本,最优的合成方案。而不是这个方案肯定可以,这么简单。

思路:
影响合成成本的因素有很多。
1、珠子需要有成本,基础珠子的价格是一个很重要的因素
2、喂珠子需要让等级、能量等级达标,所以化雪丹的价格与幻化聚能精粹丹的价格是另一个因素
3、合成珠子需要使用,融合丹、保星丹、升星丹等,因此元宝价格也是一个因素。

执行:
有了上面的影响因素,就可以考虑执行了。
因此带来了衍生的相关功能,比如我上面写的,
1 金钱计算 (为了方便 合成道具的价格,与金等实现 等价代换,相同的单位易于比较大小)
2 化雪丹相关计算 (就是为了计算等级,产生的功能)
3 计算指定等级(能量等级)的成本 (就是为了计算能量等级,产生的功能)

2420

活跃

6214

人气

170

军饷

一呼百应

Rank: 11Rank: 11Rank: 11Rank: 11

积分
1432

再探北溟洗具直播大使土豪

4#
 楼主| 发表于 2022-9-28 06:53 | 只看该作者 来自:江苏
算法:
前面的铺垫已经够多了,说一下算法是怎么具体是实现的。

方法computeFusion
计算两个指定X星X级(能量等级)的珠子融合后的元魂珠。
这个很容易实现,就是A融合 + A等级带来的融合 +B 融合 + B等级带来的融合的结果除以4即可,中间判断能否执行融合、升星还是保星等

方法questAMethod(fusionClass: FusionClass,aimFusion: Int): FusionClass求一个X星X融合点的元魂珠
复制传参的链表(用于存储合成链)
利用循环 计算needFusion,是用aimFusion X2  - 元魂珠合成列表顶端的星级,等级带来的融合点。等级递减,直到needFusion 大于等于 0 , 或者等级 等于 1
判断是否符合迭代终止条件,如果不符合迭代终止条件,勉强把他当作临时的解,再次复制一个链表,把新的操作加进去,把这次等级、合成带的成本也加进去。
在如果不符合终止条件,迭代执行questAMethod(刚才的合成链加进去,needFusion)
如果上面的等级没有等于1,就继续循环递减,复制链表,每个等级都计算 一个新的合成操作,并迭代执行questAMethod(这次循环的合成链加进去,这次循环里的needFusion)
比对与上面的操作链的成本,如果新的合成成本比 上面的低,就替换操作。
直到循环截至。
返回操作链

这样就算是计算完成了

2420

活跃

6214

人气

170

军饷

一呼百应

Rank: 11Rank: 11Rank: 11Rank: 11

积分
1432

再探北溟洗具直播大使土豪

5#
 楼主| 发表于 2022-9-28 07:03 | 只看该作者 来自:江苏
其实这个算法有一定的问题,
每次都是利用needFusion 大于等于0 计算的,不可能正正好好的等于0,因而,按照操作连的操作,反向合成,最终的结果比目标融合点只多不少。
因此我又搞了一次循环,把needFusion附近的也算了一遍,判断最终结果是否大于等于目标融合点,如果不能保证高于目标就摒弃,如果高于目标,再与之前的结果比对成本。
最终得到一个值,我就把这个值当作了成本最优。

迭代的终止条件很重要,关乎了合成结果的精度与计算时间。

我的终止条件之一是,
needFusion 大于 每个珠子喂食一颗幻化聚能精粹丹 能够获取的融合点/2
这个条件加上之后,效果会好很多。我尝试过,目标融合点大于50,随便取得值,之后想了想还是各喂一颗聚能精粹丹,就直接融合,仿佛更有用
(如果设置等于0 作为终止条件 很容易出现  needFusion = 2 或者 = 1  然后反复重复计算的情况。所以必须把这个值调高一些)


2420

活跃

6214

人气

170

军饷

一呼百应

Rank: 11Rank: 11Rank: 11Rank: 11

积分
1432

再探北溟洗具直播大使土豪

6#
 楼主| 发表于 2022-9-28 07:10 | 只看该作者 来自:江苏
下面贴上控制台输出结果的贴图。
(不要随便拿我这个图当作最优,菜单选到这个时候,控制台还是需要输入
元魂珠(1x珠子的购买成本)  cbg金价  当前点卡价格 化雪丹价格  这些内容,用来计算各种转化成本)





2420

活跃

2520

人气

0

军饷

一飞冲天

Rank: 9Rank: 9Rank: 9

积分
660
7#
发表于 2022-10-5 11:11 | 只看该作者 来自:广东
是这里吗?  元魂珠现在狐狸好贵啊
高级模式
B Color Image Link Quote Code Smilies

本版积分规则

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