gpt4 book ai didi

C# 试图找出如何将负值合并到我的代码中

转载 作者:行者123 更新时间:2023-11-30 18:12:52 25 4
gpt4 key购买 nike

我目前正在为一项作业编写一个小型主机游戏。有两个战士,他们使用的属性会影响他们的战斗。这是一个游戏示例:

勇士:

愤怒 -- 力量 12,敏捷 12,生命值 10,护甲 2
赫克托——力量 10,敏捷 18,生命值 12,护甲 1

第 1 轮:

Hector 攻击 Angriff 并命中。 Hector 造成 5 点伤害减去 Angrif 的 2 点护甲。 Angrif 还剩下 7 HitPoints。Angrif 攻击 Hector 并失手。

第 2 轮:

Angrif 攻击 Hector 并命中。 Angrif 造成 2 点伤害减去 Hectors 的 1 点护甲值。赫克托还剩 11 点生命值。Hector 攻击 Angrif 并命中。 Hector 造成 6 点伤害减去 Angrif 的 2 点护甲。 Angrif 还剩下 3 个 HitPoints。

第 3 轮:

Hector 攻击 Angrif 并命中。 Hector 造成 3 点伤害减去 Angrif 的 2 点护甲值。 Angrif 还剩 2 点生命值。Angrif 攻击赫克托并命中。 Angrif 造成 5 点伤害减去 Hector 的 1 点护甲值。赫克托还剩 7 点生命值。

第 4 轮:

Hector 攻击 Angrif 并命中。 Hector 造成 6 点伤害减去 Angrif 的 2 点护甲值。 Angrif 被杀。

战斗结束,Hector 击败了 Angriff。

现在,我的导师给出的警告之一是

"Make sure that your damage can't be a negative value that actually increases the struck Warrior's HitPoints."

当我试图将其合并到我的代码中时,我非常困惑,脑子一片空白。我得到了规则(或无限循环)的概念,但我不知道如何在我的代码中使用它。我将包括我的战斗方法的片段。在代码中,要注意的主要两件事是第一行和第三行,因为这是减法发生的地方。如果你们需要我的更多代码,我会提供。

if (warriorOne.HitPoints > (currentDamage - warriorOne.Armor))
{
warriorOne.HitPoints = warriorOne.HitPoints -
(currentDamage - warriorOne.Armor);

if (currentDamage == 1 & warriorOne.Armor == 1)
{
Console.WriteLine(warriorTwo.Name + " does 1 point of damage minus " +
warriorOne.Name + "'s 1 point of Armor. " +
warriorOne.Name + " has " + warriorOne.HitPoints +
" HitPoints remaining.");
}
else if (currentDamage == 1)
{
Console.WriteLine(warriorTwo.Name + " does 1 point of damage minus " +
warriorOne.Name + "'s " + warriorOne.Armor + " points of Armor. " +
warriorOne.Name + " has " + warriorOne.HitPoints +
" HitPoints remaining.");
}
else if (warriorOne.Armor == 1)
{
Console.WriteLine(warriorTwo.Name + " does " + currentDamage +
" points of damage minus " + warriorOne.Name +
"'s 1 point of Armor. " + warriorOne.Name + " has " +
warriorOne.HitPoints + " HitPoints remaining.");
}
else
{
Console.WriteLine(warriorTwo.Name + " does " + currentDamage +
" points of damage minus " + warriorOne.Name + "'s " +
warriorOne.Armor + " points of Armor. " +
warriorOne.Name + " has " + warriorOne.HitPoints +
" HitPoints remaining.");
}
}

最佳答案

这个提示指向的问题在于下面这行代码

warriorOne.HitPoints = warriorOne.HitPoints - (currentDamage - warriorOne.Armor);

如果 warriorOne.Armor 大于 currentDamage,结果将是 warriorOne 被治愈。这就是@John 对 Math.Max 的提示发挥作用的地方。

必须通过以下方式将计算出的损坏限制在最小值为零

warriorOne.HitPoints = warriorOne.HitPoints - Math.Max(0, currentDamage - warriorOne.Armor);

关于C# 试图找出如何将负值合并到我的代码中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54820644/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com