2016-11-13 5 views
-2

Здравствуйте, я сейчас работаю над чем-то, что зависит от проверки перекрытия двух прямоугольников в Java на BlueJ, и я проверял, что интернет застрял часами, чтобы что-нибудь помочь, но я не удалось найти что-нибудь, что помогает, что достаточно конкретно для того, с чем я имею дело.Проверка 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; 
    } 

} 

Эмм, я относительно новым для Java, поэтому, пожалуйста, простите, как чудовищно это отформатирован> .>

Общий смысл того, что ему нужно сделать, - это вернуть true, когда прямоугольники перекрываются :) Еще, он вернет false. Причина, по которой это требуется, заключается в том, что я хочу, чтобы прямоугольники случайным образом определяли свое положение на экране, пока они не перекрываются.

Я уже включил методы доступа, которые возвращают координаты X и Y, а также ширину и высоту прямоугольников, и это то, что я использую в выражении if для сравнения и посмотреть, не пересекаются ли они над кругом.

Что касается того, что с этим не так, я в настоящее время не уверен, но я думаю, что это связано с логикой оператора, например, я не сравнивал правильные переменные и т. Д. Или я добавил неверных операторов:/

Любые советы или такие будут оценены :)

+0

проверить веб-страницы каждого класса dnt hurt – 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