魔塔

游戏中的数学之魔塔数学

白昼怎懂夜的黑 提交于 2020-02-14 08:22:33
前言:这几天心血来潮找找以前玩过的老游戏,就随手下载了一个PK32。今天早上又看到光良50岁的热搜,一方面感叹时光飞逝,一方面也感觉到作者刘景雄在代码方面的强悍。 足足五页的游戏却只有7.3M的软件大小,还有几乎完备的美术。故此写了这篇文章。 一、基础数据 这种游戏想必大家多少也有些了解。所谓的计算,就是我先攻击,我的伤害=我的ATK-敌人DEF,然后敌人生命值下降这些。然后敌人攻击我。敌人伤害=敌人ATK-我的DEF,然后我的生命值下降这些。直到一方的生命值下降为0为止。 首先我们先将一些数据来数学化。 设我的攻击为MATK,防御为MDEF。敌人的攻击为EATK,防御为EDEF,生命值为EHP。最终受到的伤害为DMG。 这样的话伤害公式为DMG=(EATK-MDEF)*EHP/(MATK-EDEF)。这里面敌人的属性都是定值。所以DMG、MATK、MDEF这三个变量与这些定值构成了一个三元函数。 因为在pk32的21层魔塔里并没有越升越贵或者同价格攻防数量不等等说法,所以不必考虑这些条件。 二、开始计算 我们的目标是计算什么条件下提升攻击收益高,提升防御收益高。当然在21层魔塔中不必考虑过多。因为本身游戏难度不高,所以可以在多数条件下防杀敌人(防御力大于等于敌人攻击力。而攻击力只要能破防即可)。 我们假设每次提升为k。 那么当提升攻击时,DMG1=(EATK-MDEF)*EHP/