此方法返回true,false和其他值。如何使用返回2個以上值的布爾方法
public boolean Intersection (Circle circle, Rectangle rectangle) {
... // test something
... return true;
... // test another thing
... return false;
...
... return xCornerDistSq + yCornerDistSq <= maxCornerDistSq; //Third return value
}
這是一個2D遊戲,其中一個球應該從矩形反射,包括矩形的邊緣。我上面鏈接的第三個返回值應該是檢測球和矩形邊緣之間的碰撞。問題是,一旦我調用方法,我不知道如何在代碼中使用它。
我現在有是這樣的
這是該方法的全碼:
public boolean Intersection (Circle circle, Rectangle rectangle) {
double cx = Math.abs(circle.getLayoutX() - rectangle.getLayoutX() - rectangle.getWidth()/2);
double xDist = rectangle.getWidth()/2 + circle.getRadius();
if (cx > xDist) { return false; }
double cy = Math.abs(circle.getLayoutY() - rectangle.getLayoutY() - rectangle.getHeight()/2) ;
double yDist = rectangle.getHeight()/2 + circle.getRadius();
if (cy > yDist) { return false; }
if (cx <= rectangle.getWidth()/2 || cy <= rectangle.getHeight()/2) { return true; }
double xCornerDist = cx - rectangle.getWidth()/2;
double yCornerDist = cy - rectangle.getHeight()/2;
double xCornerDistSq = xCornerDist * xCornerDist;
double yCornerDistSq = yCornerDist * yCornerDist;
double maxCornerDistSq = circle.getRadius() * circle.getRadius();
return xCornerDistSq + yCornerDistSq <= maxCornerDistSq;
}
所以,我怎麼去實現它,當我調用函數?我希望我的球也可以跳出邊緣,但我不知道如何使用這種方法調用它。
我現在有這就是:
boolean intersection = Intersection(circle1, rect1);
if (intersection == true) {
double x = (rect1.getLayoutX() + rect1.getWidth()/2) - (circle1.getLayoutX() + circle1.getRadius());
double y = (rect1.getLayoutY() + rect1.getHeight()/2) - (circle1.getLayoutY() + circle1.getRadius());
if (Math.abs(x) > Math.abs(y)) {
c1SpeedX = -c1SpeedX;
} else {
c1SpeedY = -c1SpeedY;
}
}
}
}
真的,假的,也許?你可以寫一個枚舉。 –
顯示的代碼將返回兩個可能的值。最後一行將返回true或false。如果您需要返回兩個以上的值,則必須使用不同的類型 - 「boolean」將不起作用 –
對不起,不知道該怎麼做。你能提供一個代碼示例嗎? – Gregg1989