这是控制火炮射击机器人的C#代码。
static bool ShouldFire(bool enemyInFront, string enemyName, int robotHealth)
{
bool shouldFire = true;
if (enemyInFront == true)
{
if (enemyName == "boss")
{
if (robotHealth < 50) shouldFire = false;
if (robotHealth > 100) shouldFire = true;
}
}
else
{
return false;
}
return shouldFire;
}
该代码看起来有些尴尬,并且可以大大缩短重写时间。 stackoverflow上的社区可以建议一种c#方法,该方法与上面的代码相同,但是使用一个操作吗?请您提出建议。这是人们正在寻找的一些模板:
static bool ShouldFire2(bool enemyInFront, string enemyName, int robotHealth)
{
return enemyInFront && (...);
}
我希望您能获得一些有关如何实现预期结果的解释。
答案 0 :(得分:2)
我的建议是这样
static bool ShouldFire2(bool enemyInFront, string enemyName, int robotHealth)
{
return enemyInFront && (enemyName == "boss" ? robotHealth >= 50 : true);
}
您首先要检查前方是否有敌人。如果是,请检查其是否为boss
,并且其hp大于50,然后返回true,否则返回false。如果不是老板,请始终返回true。如果角色前面没有任何东西,则为false。
答案 1 :(得分:0)
“ if(robotHealth> 100)shouldFire = true;”行什么也没做。除非生命值低于50,否则shouldFire已经为真。
因此您可以将该部分缩小为:
static bool ShouldFire(bool enemyInFront, string enemyName, int robotHealth)
{
bool shouldFire = true;
if (enemyInFront == true)
{
return !(enemyName != "boss" && robotHealth < 50); }
else
{
return false;
}
return shouldFire;
}
可以简化为:
static bool ShouldFire(bool enemyInFront, string enemyName, int robotHealth)
{
return enemyInFront && (enemyName != "boss" || robotHealth >= 50);
}