Partage
  • Partager sur Facebook
  • Partager sur Twitter

méthode contains() de Polygon

Sujet résolu
    18 octobre 2010 à 20:02:58

    Bonjour,

    J'ai crée un plateau en vue isométrique à l'aide Case extends Polygon( ce sont donc des losange)
    J'ai dessiné ces cases sur un plateau, extends JPanel.

    Lors du clic sur le plateau, je voudrais savoir à quelle case ce point appartient. Je passe donc toutes les cases en revue (c'est temporaire, je ciblerais plus tard) à l'aide de la méthode contains(Point p)
    Le problème, c'est que ça me renvoie toujours true, même si je clique à un endroit sans cases. (toutes les cases me renvoient true).

    public void mouseClicked(MouseEvent e) {		
    		for (Case[] tab : cases){
    			for (Case maCase : tab){		
    				Point point = new Point(e.getX(), e.getY());				
    				if (maCase.contains(point) == true);
    				System.out.println(maCase.getNumero());
    			}
    		}	
    	}
    


    Ce code me renvoie donc tous les numéros de toutes les cases, quelque soit l'endroit où je clic.
    A tout hasard, un autre bout de code:

    public void paintComponent(Graphics g){
    		for (Case[] tab : cases){
    			for (Case maCase : tab){				
    				g.drawPolygon(maCase);			
    			}
    		}
    


    Voilà, je n'ai pas trouvé de réponses sur le net, si quelqu'un pouvait m'éclairer... merci ;)
    • Partager sur Facebook
    • Partager sur Twitter
      18 octobre 2010 à 20:19:52

      public void mouseClicked(MouseEvent e) {        
              for (Case[] tab : cases){
                  for (Case maCase : tab){        
                      Point point = new Point(e.getX(), e.getY());                
                      if (maCase.contains(point) == true) // Tu avais mis un ;
                          System.out.println(maCase.getNumero());
                  }
              }    
          }
      

      Sauf erreur de ma part, c'est aussi bête que ça ^^

      EDIT : Au passage, ton point n'a besoin d'être déclaré qu'une seule fois et pas à chaque tour de boucle :-°
      public void mouseClicked(MouseEvent e) { 
              Point point = new Point(e.getX(), e.getY()); 
              for (Case[] tab : cases){
                  for (Case maCase : tab){                    
                      if (maCase.contains(point) == true)
                          System.out.println(maCase.getNumero());
                  }
              }    
          }
      
      • Partager sur Facebook
      • Partager sur Twitter
        19 octobre 2010 à 7:12:47

        Mais quel con :lol:

        Oui c'est ça, jamais fait un erreur aussi bête je crois^^ merci ;)
        • Partager sur Facebook
        • Partager sur Twitter

        méthode contains() de Polygon

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown