Intersect rectangles

Bonjour,

Je suis débutant en java et j'ai un petit problème, je cherche l'intersection de deux rectangles

pour ça je fais la collision entre un petit rectangle et un plus gros rectangle Rectangle(50, 50, 200, 20) .

Le problème c'est que lorsque je fais r1.intersects(r); l'intersection ne marche que pour le coté du haut , pour le coté bas, droit et gauche il ne détecte aucune collision.

Cordialement

2 réponses

  1. Modérateur
    Fais voir ton code, impossible de t'aider sinon !
    0
    1.  public Boolean isCollided(Rectangle r){
      return terrain.intersects(r);
      }
      avec terrain : private Rectangle terrain = new Rectangle(50, 50, 200, 20);
      le rectangle avec lequel j'apelle la fonction :
      java.awt.Rectangle[x=200,y=284,width=16,height=16]
      0
      1. Modérateur
        Ces deux rectangles ne s'intersectent pas, c'est donc normal d'avoir false...

        0
      2. j'ai probablement un problème d'affichage car à l'écran ils s'intersectent
        0
      3. Modérateur
        Un exemple d'affichage :

        import java.awt.Component;
        import java.awt.Graphics;
        import java.awt.Rectangle;
        
        import javax.swing.JFrame;
        
        public class Test
        {
            public static void main(String[] args)
            {
                JFrame frame = new JFrame();
                frame.add(new Component()
                {
                    Rectangle r1 = new Rectangle(50, 50, 200, 20);
                    Rectangle r2 = new Rectangle(200, 284, 16, 16);
                    
                    public void paint(Graphics g)
                    {
                        g.drawRect(r1.x, r1.y, r1.width, r1.height);
                        g.drawRect(r2.x, r2.y, r2.width, r2.height);
                    }
                });
                
                frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setVisible(true);
            }
        }
        0