2016-11-13 2 views
-2

Bonjour :) Je travaille actuellement sur quelque chose qui dépend de la vérification du chevauchement de deux rectangles en Java sur BlueJ, et j'ai vérifié internet pendant des heures pour tout aider, mais je n'ai pas réussi à trouver quelque chose qui aide qui est assez spécifique à ce que j'ai affaire.Vérification de Rectangle OverLap

Actuellement, j'écris une méthode appelée « checkOverLap » et il ressemble un peu à ceci:

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, je suis relativement nouveau à Java, donc s'il vous plaît pardonnez comment effroyablement, au format> >

L'essentiel de ce qu'il faut faire, est de retourner vrai lorsque les rectangles se chevauchent :) Sinon, il retournera faux. La raison pour laquelle cela est nécessaire, c'est parce que je veux que les rectangles à randomiser leur position sur l'écran jusqu'à ce qu'ils se chevauchent.

J'ai déjà inclus des méthodes d'accesseur qui retournent les coordonnées X et Y et la largeur et la hauteur des rectangles, et ce sont ce que j'utilise dans l'instruction if pour comparer et voir si elles surviennent. Quant à ce qui ne va pas, je ne suis pas sûr, mais je pense que cela a à voir avec la logique de l'instruction, comme si je n'avais pas comparé les bonnes variables, etc. ou ajouté les mauvais opérateurs:/

Tout conseil ou tel serait apprécié :)

+0

de vérifier les pages Web de chaque classe dnt blessé – gpasch

Répondre

1

Vous ne devez pas faire vous-même. Utilisez la méthode des intersections de java.awt.Rectangle à la place:

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