2016-11-13 12 views
-2

こんにちは:)私は現在、BlueJのJavaで2つの長方形の重なりをチェックすることに就いています。インターネットは何かを助けるために何時間も立ち往生していましたが、私が扱っているものに特化したものを見つけるのに役立ちました。Checking Rectangle OverLap

現在、私は「checkOverLap」と呼ばれる方法を書いて、それは少し次のようになります。

private Boolean checkOverlap() { 
    if (word2.getXPosition() >= word1.getXPosition() && word2.getXPosition() <= word1.getXPosition() + word1.getTextWidth() && (word2.getYPosition() >= word1.getYPosition() && word2.getYPosition() <= word1.getYPosition() + word1.getTextHeight())){ 
     return true; 
    } 

    else{ 
     return false; 
    } 

} 

のErm、私はJavaへの比較的新しいですので、こののフォーマット方法恐ろしくご容赦下さい> 。>

矩形が重なったときに真を返すことです。それ以外の場合はfalseを返します。これが必要なのは、四角形が重なるまで画面上の位置をランダムにしたいからです。

私は既に、X座標とY座標、および長方形の幅と高さを返すアクセサメソッドを含んでいます。これらは、ifステートメントで、ラップオーバーを比較して確認するために使用しています。

私は現在、不明ですが、正しい変数などを比較していないか、間違った演算子を追加したように、文のロジックと関係していると思います。/

アドバイスなどありがとうございます:)

+0

各クラスのウェブページをチェックしてください – gpasch

答えて

1

あなたはそれを自分で行う必要はありません。代わりにjava.awt.Rectangleの交差法を使用してください。

final Rectangle r1 = new Rectangle(50, 50, 10, 10); 
final Rectangle r2 = new Rectangle(40, 40, 10, 10); 
final Rectangle r3 = new Rectangle(40, 40, 15, 15); 

System.out.println(r2.intersects(r1)); // false 
System.out.println(r3.intersects(r1)); // true