public Boolean DetectPlayerAndGround1Collision2(/*snip*/)
{
if (/*snip*/)
{
if (/*snip*/) { return true; }
else if (/*snip*/) { return true; }
else if ((/*snip*/) { return true; }
}
}
5 に答える
5
else の場合に値を返すことができませんでした:
public Boolean DetectPlayerAndGround1Collision2(/*snip*/)
{
if (/*snip*/)
{
if (/*snip*/) { return true; }
else if (/*snip*/) { return true; }
else if ((/*snip*/) { return true; }
else{return false;}
}
else
{
return false;
}
}
于 2012-11-28T21:15:23.643 に答える
3
以下:
if (A)
{
if (B) { return true; }
else if (C) { return true; }
else if (D) { return true; }
}
次と同等です。
return A && (B || C || D);
(以前は値を返さなかった場合は、false を返すことを暗示していると仮定します。)
于 2012-11-28T21:25:44.710 に答える
3
次のことをお勧めします。
public Boolean DetectPlayerAndGround1Collision2(/*snip*/)
{
bool result = false;
if (/*snip*/)
{
if (/*snip*/) { result = true; }
else if (/*snip*/) { result = true; }
else if (/*snip*/) { result =true; }
}
return result;
}
単一の return ステートメントを使用すると、何が起こっているかを簡単に追跡できます。また、それが条件付きステートメントの外側にあり、宣言時に初期化されることを保証することで、常に値を返すことが保証されます。
于 2012-11-28T21:18:20.997 に答える
2
else
残りの条件のキャッチオールとして がなければ、return false;
次のロジック チェックを追加する必要があります。
public Boolean DetectPlayerAndGround1Collision2(/*snip*/)
{
if (/*snip*/)
{
if (/*snip*/) { return true; }
else if (/*snip*/) { return true; }
else if (/*snip*/) { return true; }
}
return false;
}
于 2012-11-28T21:14:45.110 に答える
2
常に値を返すとは限りません。
if (playerPositionM.Y <= groundPositionM.Y + groundM.Height && playerPositionM.Y > groundPositionM.Y)
{
if (playerPositionM.X < groundPositionM.X && (playerPositionM.X + playerM.Width < groundPositionM.X + groundM.Width && playerPositionM.X + playerM.Width > groundPositionM.X))
{
return true;
}
else if (playerPositionM.X + playerM.Width > groundPositionM.X + groundM.Width && (playerPositionM.X < groundPositionM.X + groundM.Width && playerPositionM.X > groundPositionM.X))
{
return true;
}
else if ((playerPositionM.X > groundPositionM.X && playerPositionM.X < groundPositionM.X + groundM.Width) && (playerPositionM.X + playerM.Width < groundPositionM.X + groundM.Width && playerPositionM.X + playerM.Width > groundPositionM.X))
{
return true;
}
else
{
// You need to return a value here:
}
}
else
{
// You need to return a value here:
}
etc!
于 2012-11-28T21:16:53.287 に答える