You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#英雄联盟伤害计算结果异常求助:与预期值不符

《英雄联盟》伤害计算程序Bug求助

我用C#开发了一个基于《英雄联盟》的伤害计算程序,支持计算物理伤害、魔法伤害或混合伤害。运行第二个测试用例时,计算得出的总伤害为167.16782,与预期值199.3007不符。以下是实现代码及测试用例,恳请技术指导:

class Player
{
    float HP;
    float Armor;
    float PhysicalAttack;
    float MagicAttack;

    public void TakePhysicalDamage(float HP, float Armor, float PhysicalDamage)
    {
        float Multiplier;
        if (Armor >= 0)
        {
            Multiplier = 100 / (100 + Armor);
        }
        else
        {
            Multiplier = 2 - 100 / (100 - Armor);
        }
        PhysicalDamage = PhysicalDamage * Multiplier;
        float HP_Value = HP - PhysicalDamage;
        Console.WriteLine("Spelaren tog " + PhysicalDamage + " Fysisk skada");
        Console.WriteLine("Spelarens liv är " + HP_Value);
    }

    public void TakeMagicDamage(float HP, float MR, float MagicDamage)
    {
        float Multiplier;
        if (MR >= 0)
        {
            Multiplier = 100 / (100 + MR);
        }
        else
        {
            Multiplier = 2 - 100 / (100 - MR);
        }
        MagicDamage = MagicDamage * Multiplier;
        float HP_Value = HP - MagicDamage;
        Console.WriteLine("Spelaren tog " + MagicDamage + " Magisk Skada");
        Console.WriteLine("Spelarens liv är " + HP_Value);
    }

    public void TakeMagicAndPhysicalDamage(float HP, float MR, float MagicDamage, float Armor, float PhysicalDamage)
    {
        float PhysicalMultiplier;
        if (MR >= 0)
        {
            PhysicalMultiplier = 100 / (100 + MR);
        }
        else
        {
            PhysicalMultiplier = 2 - 100 / (100 - MR);
        }
        float MagicMultiplier;
        if (Armor >= 0)
        {
            MagicMultiplier = 100 / (100 + Armor);
        }
        else
        {
            MagicMultiplier = 2 - 100 / (100 - Armor);
        }
        PhysicalDamage = PhysicalDamage * PhysicalMultiplier;
        MagicDamage = MagicDamage * MagicMultiplier;
        float Damage = MagicDamage + PhysicalDamage;
        float HP_Value = HP - Damage;

        Console.WriteLine("Spelaren tog " + Damage + " Skada");
        Console.WriteLine("Spelarens liv är " + HP_Value);
    }

    public static void Main()
    {
        Player player = new Player();
        Console.WriteLine("Skriv spelarens Liv");
        float HP = Convert.ToInt32(Console.ReadLine());
        Console.WriteLine("Skriv Spelarens Fysiska försvar");
        float Armor = Convert.ToInt32(Console.ReadLine());
        Console.WriteLine("Skriv Spelarens Magiska försvar");
        float MR = Convert.ToInt32(Console.ReadLine());

        Console.WriteLine("Skriv motståndarens Fysiska skada");
        float PhysicalDamage = Convert.ToInt32(Console.ReadLine());
        Console.WriteLine("Skriv motståndarens Magiska skada");
        float MagicDamage = Convert.ToInt32(Console.ReadLine());
        Console.WriteLine("Skriv in Fysisk skada, Magisk skada eller Båda");
        string input = Console.ReadLine();
        if (input == "Fysisk skada")
        {
            player.TakePhysicalDamage(HP, Armor, PhysicalDamage);

        }
        else if (input == "Magisk skada")
        {
            player.TakeMagicDamage(HP, MR, MagicDamage);
        }
        else if (input == "Båda")
        {
            player.TakeMagicAndPhysicalDamage(HP, MagicDamage, MR, Armor, PhysicalDamage);
        }
    }
}

测试用例

魔法伤害物理伤害魔法抗性护甲预期总伤害
100100100100100
20010030120199.3007
6796030120549.5804
100350-10100284.0909

内容的提问来源于stack exchange,提问作者Realgame

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 17:10:24