题解 | RPG 游戏战斗伤害计算器
RPG 游戏战斗伤害计算器
https://www.nowcoder.com/practice/83b9a227af684c5185f304bb4553b84c
根据文本进行伤害计算,先按照文本为各变量赋值,再根据公式damage_dealt = base_damage * advantage * critical_mul *immue_mul,计算攻击者对目标造成的伤害damage_dealt,注意不额外包装json格式
输出描述:
{
"damage_dealt": Integer, //最终造成伤害,向下取整
"is_critical": Boolean, //是否触发暴击
"reaction": "String" //触发的反应描述,如 "Water vs Fire (Double Damage)", "Invincible", "Normal"
}
变量说明
base_damage:
if攻击力 > 防御力: base_damage = 攻击力 - 防御力
else if攻击力 <= 防御力: base_damage = 1
advantage:
攻击方克制防守方时取2,其他默认情况取 1。
火对草,草对水,水对火克制
critical_mul:
如果攻击被判定为 "暴击 (Critical Hit)",暴击系数取 1.5,否则默认为1。
immue_mul:
默认为1,如果目标具备特殊状态 "无敌 (Invincible)"则取 0。
示例①
输入:我方角色是 火属性,攻击力 100,本次攻击触发了 暴击。敌方怪物是 草属性,防御力 20,无特殊状态。
base_damage 攻击力>防御力, base_damage = 100-20 = 80
advantage 火对草 2
critical_mul 暴击 1.5
immue_mul 无特殊状态 1
damage_dealt = base_damage * advantage * critical_mul *immue_mul = 80 * 2 *1.5 * 1 = 240
输出:
{
"damage_dealt": 240,
"is_critical": true,
"reaction": "Fire vs Grass (Double Damage)"
}
示例②
输入:我方角色是 火属性,攻击力 100,本次攻击未触发暴击。敌方怪物是 草属性,防御力 100,无敌。
base_damage 攻击力<=防御力, base_damage = 1
advantage 火对草 2
critical_mul 1
immue_mul 0
damage_dealt = base_damage * advantage * critical_mul *immue_mul = 1 * 2 *1 * 0 = 0
输出:
{
"damage_dealt": 0,
"is_critical": false,
"reaction": "Invincible"
}
碰运气 这个要用DS
查看12道真题和解析