Partage
  • Partager sur Facebook
  • Partager sur Twitter

fonction line ()

    18 décembre 2014 à 11:04:20

    Bonjour à tous !

    Je suis en train de programmer un petit jeu de points à relier.
    J'ai réussi à créer le trait qui relie les points 1 et 2 mais le problème est qu'il disparait à chaque fois que je relâche le clic de la souris.

    Comment puis-je faire ?

    Voici mon code pour le moment : 

    // au début
    
    PImage bg;
    PImage cursor;
    void setup (){
      
      //taille de mon image
      size (1280,750);
     //je charge le curseur
      cursor = loadImage("cursor.png");
      //j'ajoute un fond
      bg = loadImage("level_1.png");
      }
      
      //à chaque instant
    void draw(){ 
      background (bg);
      noStroke();
    image(cursor,mouseX,mouseY);
    // dessine le point 1
      ellipse(450,150,25,25);
      // dessine le point 2
      ellipse(800,150,25,25);
      // dessine le point 3
      ellipse(450,500,25,25);
      // dessine le point 4
      ellipse(800,500,25,25);
      smooth();
    }
    
    
     //tracé au clic de la fausse souris
     void  mousePressed(){
      stroke(0);
    
      //épaisseur de mon trait
      strokeWeight(1);
      //line(mouseY,mouseX, pmouseY, pmouseX);
      
      // detecte l'endroit du clic inverse`
      // POINT 1
      if (dist(mouseX,mouseY,450,150)<150){
        fill(0);
        ellipse(450,150,25,25);
      }else{
      }
      // POINT 2
      if (dist(mouseX,mouseY,800,150)<150){
        line(450,150,800,150);
      }else{
      }
        // POINT 3
      if (dist(mouseX,mouseY,450,500)<150){
        println("gagne");
      }else{
      }
        // POINT 4
      if (dist(mouseX,mouseY,800,500)<150){
        println("gagne");
      }else{
      }
     }

    Merci !!! :-)

    • Partager sur Facebook
    • Partager sur Twitter
      18 décembre 2014 à 11:13:02

      Salut,

      1. Qu'utilises-tu comme framework pour ton jeu ? ça aiderait a appréhender le problème et on pourra essayer de le compiler/débugger dans un de nos IDE.

      2. Je vois "mousePressed". Peut-être que ce n'est exécuté QUE tant que le bouton de la souris est pressé. Regarde s'il n'existe pas un mouseClicked() ou qqch comme ça ?

      • Partager sur Facebook
      • Partager sur Twitter
      Lorsque l'on fait une recherche google, on tombe sur des forums qui nous disent de chercher sur google...
        18 décembre 2014 à 11:17:06

        Ah oui désolée, j'ai oublié de préciser.
        C'est du java !
        Je n'en ai jamais fait avant ça alors je suis un peu paumée.

        Je viens de tester avec le mouseClicked mais ça ne change rien :/

        • Partager sur Facebook
        • Partager sur Twitter
          18 décembre 2014 à 11:27:08

          Pardon, je me suis mal exprimé ! Je vois bien que c'est du java :-) Mais tu utilises quoi ? Swing ? Slick2D ? LWLJGL ? Autre ?
          • Partager sur Facebook
          • Partager sur Twitter
          Lorsque l'on fait une recherche google, on tombe sur des forums qui nous disent de chercher sur google...
            18 décembre 2014 à 11:43:43

            Pour ton soucis, tu devrais sans doute utiliser le listener mouseReleased.
            • Partager sur Facebook
            • Partager sur Twitter
            "On ne remplace pas des plombs sautés avant de savoir pourquoi ils ont sauté." 2001 l'odyssée de l'espace, Arthur C. Clarke
              18 décembre 2014 à 11:54:29

              @VonDriguen : non c'est moi qui ne comprend pas les termes, comme j'ai dit je débute, je n'y connais rien ! tu veux parler du logiciel dans lequel je code ? Ou j'ai toujours rien saisi ? x) si c'est ça, c'est processing !

              @thecraouch : j'ai essayé aussi mais ça fait la même chose ! en fait ce qui pose problème c'est que dans le "void loop" j'ai le background qui se replace toujours au dessus de ce qu'il y a dans le mousePressed non ?

              • Partager sur Facebook
              • Partager sur Twitter
                18 décembre 2014 à 13:01:30

                Ton problème de background qui écrase ton dessin, ça me rappelle un projet que j'ai fait pendant mes études (c'était un jeu de petits chevaux). La solution que j'avais appliqué : je dessinais mon plateau dans ma fenêtre, puis par dessus je disposais un JPanel transparent (option setOpaque) dans lequel je dessinais mes pions. Cette solution pourrait te convenir, qui sait ?
                • Partager sur Facebook
                • Partager sur Twitter
                "On ne remplace pas des plombs sautés avant de savoir pourquoi ils ont sauté." 2001 l'odyssée de l'espace, Arthur C. Clarke
                Anonyme
                  18 décembre 2014 à 13:22:29

                  Mm ..
                  Je penses que la classe AffineTransform pourrait t'aider.
                  Dans ta méthode paint, tu fais :
                   AffineTransform ancienne_transformation = new AfficheTransform(ton graphics)
                  Tu fais tes modification en utilisant g ..
                  Et a la fin : g.setTransform(affichetransform).

                  Ca permet de conserver ton ancien dessin, d'appliquer tes nouvelles lignes et de remettre ton ancien graphics.

                  • Partager sur Facebook
                  • Partager sur Twitter

                  fonction line ()

                  × 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