《魔药经济学》完美魔药计算器(使用Go语言编写) 魔药经济学计算器 过去一周,我一直在开发我的最新项目:使用Go语言编写的《魔药经济学》完美魔药计算器。 这个工具旨在通过提供多种方法来制作符合特定筛选条件的完美魔药,帮助我和其他玩家最大化可用材料的价值。 当前状态截图(我使用了基础魔药和材料,以免给新玩家剧透):

算法、筛选、图像。 最重要的问题是:如何实现? 如何添加材料和药水? 如何显示结果? 如何筛选和排序? 如何计算组合方式? 当然,我从最困难的部分入手:算法。解决这类问题对程序员来说始终是一种需要克服的挑战。 我最初采用了基础的暴力破解法:尝试所有符合给定筛选条件的组合,并将结果输出到控制台。这方法不错,但有一个问题,一旦材料数量增加,可能的组合数量也会随之增长,这种算法就显得力不从心了。于是,我决定对其进行改进。 我的第一个真正的搜索算法如下:以目标药水为导向,添加含有所需魔法元素的材料,直到超出筛选条件或找到解决方案为止。好的,现在不再有多余的检查了,我们只添加合理的材料。对吧? 不对。你看,即便这样也不足以形成一个合适的解决方案。而且,这种方法存在一个无法解决的漏洞(当然,它是可以修复的,但在计算过程中确实占用了重要资源)。所有多魔法元素类型的材料都可能导致结果重复,因为它们属于两个或更多类别,所以我们很可能会通过不同方式两次选取它们,最终得到相同的组合。 因此,今天我终于想出了一个完美的解决方案(至少我目前是这么认为的):根据当前药水过滤材料:排除所有魔法元素不符的材料。然后,对于每一种所需的魔法元素,我们尝试用所有可用材料来填充它的所有组合。经过一些额外优化后,这种方法让我实现了每次请求仅需毫秒级的搜索速度。成功了。现在是时候回答之前提到的其他问题了。你猜对了,我在研究算法的过程中就解决了这些问题。你知道,我也想时不时玩会儿游戏,在我的游戏过程中使用我这个新的“科学怪人”程序。所以,我尽我所能让使用这个程序时感觉更顺手。我会在发现任何材料和药水的信息时,将它们硬编码到程序中。多亏了Golang的语法,这很简单。我对药水和材料进行截图,然后在程序中对它们进行格式化处理。

我使用ebiten(是不是很有趣?)库来显示结果。这是ChatGPT在我的项目中唯一涉及的部分。我使用自然语言处理的原因是,使用这个库的过程并不愉快,并且我计划在未来找到更好的结果显示方式。 最后,我使用了以下筛选和排序功能: 我使用了针对魔法薄荷总数、所用材料数量、药水和特性的筛选器。 结果排序方式:药水→材料数量→魔法薄荷→特性→所用材料总成本 材料根据其提供的魔法薄荷总数进行排序,以便更快搜索。 如何安装? 目前,我没有计划制作任何公开可用且使用方便的版本。如果你确实感兴趣,可以访问下方提及的代码仓库,使用“go build .”命令构建项目,并通过控制台启动。此外,我欢迎任何形式的帮助和项目贡献。对于改进算法、数据存储或展示方式的建议,我将不胜感激;如果你的修改质量良好,我甚至可以将其合并到主项目中。

接下来是什么?

我脑海中涌现出许多可以改进的想法。作为自己程序的使用者,我希望它能追踪我拥有的材料,这样就不会浪费时间去寻找那些我能够重新调配的配方组合了。 我曾考虑过读取存档文件来获取可用材料,甚至想过将这个程序注入游戏以实现实时搜索。但当然,这些事情会花费我更多的时间和精力。 我希望这篇文章能激励你去做自己热爱的事情,并运用你的技能让你在任何领域的体验都更加愉快。 如果这篇文章能找到读者,并且我的程序能够发展壮大,我会非常感激。所以,欢迎分享你对它的想法。 诚挚的, Fateee,蝾螈之眼。




换一换 















