C#或操作员问题



我相信你们中的某个人可以帮助我解决这个问题。我找不到也不理解解决方案。

if (hero.IsAlive || creature.IsAlive == false)
{
if (hero.IsAlive == true)
{
Console.ForegroundColor = ConsoleColor.Red;
EnemyHitInterface();
Console.ForegroundColor = ConsoleColor.White;
Thread.Sleep(1500);
hero.Exp += 150;
baseSetting.YouWin();
hero.UpdateLvL();
hero.CharacterInterface(hero);
hero.PrintStatsHero();
Console.ReadKey();
CheckForItem();
hero.PrintStatsHero();
Console.ReadKey();
}
else if (creature.IsAlive == true)
{
Console.Clear();
CenterText("You are dead. See you next time...", 15);
Console.ReadKey();
Environment.Exit(0);
}
}

如果在我看来,只要英雄或生物死亡,它就会被触发,那么操作就很简单。如果这个生物死了,一切都很好,但如果英雄死了,它就不会被触发。我不明白的想法是什么?

对我来说,这就像:

英雄或生物死亡时,进去如果英雄还活着就这么做如果生物还活着,做这个

但正如我所说,对于这种生物来说,它不会工作

我怀疑你读过这行

if (hero.IsAlive || creature.IsAlive == false)

在你的脑海中;如果英雄或生物死了";。它实际上说的是";如果英雄还活着或者生物已经死了;。如果你遵循剩下的逻辑,你就会明白为什么你从来没有触及else if (creature.IsAlive == true)部分。

你(我认为(在第一个if语句中想要的是

if (hero.IsAlive == false || creature.IsAlive == false) // if either are dead

或者,更常见的是写

if (!hero.IsAlive || !creature.IsAlive) // if either are dead

这看起来是一个简单的逻辑错误:

if (hero.IsAlive || creature.IsAlive == false)

与相同

if ((hero.IsAlive == true) || (creature.IsAlive == false))

但是,在你要检查的if块内:

if (hero.IsAlive == true)
{
...
}
else if (creature.IsAlive == true)
{
...
}
}

如果你把它们结合起来,那就是:

if ((hero.isAlive == true && hero.IsAlive == true) || (creature.IsAlive == false && hero.IsAlive == true))
{
...
}
else if ((hero.IsAlive == true && creature.IsAlive == true) || (creature.IsAlive == false && creature.IsAlive == true))
{
...
}

但是(creature.IsAlive == false && creature.IsAlive == true)总是假的,而(hero.isAlive == true && hero.IsAlive == true)总是真的。

因此,重新调整您的逻辑:

if (hero.IsAlive != creature.IsAlive ) //Either the hero or creature is dead
{
if (hero.IsAlive)
{
//Hero is alive, creature is dead
}
else 
{
//Creature is alive, hero is dead.
}
}
else if (hero.IsAlive)
{
//Hero and creature are both alive
}
else 
{
//Hero and creature are both dead
}

应该捕捉到你想要的行为。

相关内容

  • 没有找到相关文章

最新更新