题解 | 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

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务