我相信你们中的某个人可以帮助我解决这个问题。我找不到也不理解解决方案。
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
}
应该捕捉到你想要的行为。