【问题标题】:Basic while loop c# [closed]基本的while循环c#[关闭]
【发布时间】:2016-10-12 03:55:24
【问题描述】:

我有一个问题要解决,其中 2 个假设的对手正在决斗 RPG 风格。我被要求给他们 HP 并且循环的每一轮 HP 都会因他们的对手击中他们而分别丢失。我对此有了基本的了解,但我的数字不断重复。在 Visual Studios 15 上工作。提前致谢!

/*Fighter 1 is Charlie The Unicorn
 *Fighter 2 is Nyan Cat
 *Fighter 1 has 100 HP
 *Fighter 2 has 150 HP
 *Fighter 1 can hit as hard as 15HP each turn
 *Fighter 2 can hit as hard as 10HP each turn
*/

//Who wins the fight

int fighterOneHealth = 100;
int fighterTwoHealth = 150;
Random randomizer = new Random();
while (fighterOneHealth > 0 || fighterTwoHealth > 0)
{      
    int fOneRandomHit;
    int fTwoRandomHit;
    fOneRandomHit = randomizer.Next(0, 15);
    fTwoRandomHit = randomizer.Next(0, 10);
    int fightOneHpLoss = fighterOneHealth - fTwoRandomHit;
    int fightTwoHpLoss = fighterTwoHealth - fOneRandomHit;
    Console.WriteLine("After attack: Charlie the Unicorn HP: {0}, Nyan Cat HP: {1}", fightOneHpLoss, fightTwoHpLoss);
}

【问题讨论】:

  • 你永远不会修改你在条件语句fighterOneHealth > 0 || fighterTwoHealth > 0中检查的值
  • 此外,变量名称fightOneHpLossfightTwoHpLoss 让我感到困惑,因为它们是应用随机命中后剩下的马力。也许您的意思是fighterOneHealth -= fTwoRandomHit 等?

标签: c# visual-studio while-loop


【解决方案1】:

您在循环内声明 变量:

int fightOneHpLoss = fighterOneHealth - fTwoRandomHit;
int fightTwoHpLoss = fighterTwoHealth - fOneRandomHit;

...但是您永远不会修改旨在代表玩家当前健康状况的变量。你根本不需要那些额外的变量——你只需要减少健康:

fighterOneHealth -= fTwoRandomHit;
fighterTwoHealth -= fOneRandomHit;
Console.WriteLine("After attack: Charlie the Unicorn HP: {0}, Nyan Cat HP: {1}",
    fighterOneHealth, fighterTwoHealth);

【讨论】:

  • 非常有帮助。谢谢乔恩。我想我只是想多了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-14
  • 1970-01-01
  • 1970-01-01
  • 2020-07-27
  • 2014-03-22
相关资源
最近更新 更多