Partage
  • Partager sur Facebook
  • Partager sur Twitter

Programmation de base Processing

Annimation d'une balle

Sujet résolu
    25 août 2015 à 19:08:55

    Bonjour,

    Étant nouveau sur ce forum, je ne sais pas si cette section est la plus approprier, si ce n'est pas le cas je m'excuse d'avance.

    Alors, cette année je suis étudiant en  BTS système numérique option Informatique et réseau, et l'une des matière principale est la programmation.

    J'ai commencer à programmer il y a donc une semaine avec Processing, comme sa me plaît réellement j'hésite pas à avancer sur mes cours, bref. Là je suis actuellement bloquer sur un étape d'un TP. Alors je vous met la question !

    "Dans un canvas gris foncé, faire déplacer lentement un cercle rouge de centre (0,0) et de
    rayon 20 le long de la diagonale d’équation y = x, pour le faire sortir du canvas et le
    perdre…"

    Pour y arriver, j'ai fait comme-suis:

    void setup()
    {
      size(150,150);
      background(120);
      fill(255,0,0);
    }


      int a =0;
      int b =0;
     

    void draw()
    {
      ellipse(a++%height,b++%width,20,20);
    }

    J'arrive à faire traverser en diagonale la balle rouge cependant, sa ne s’arrête jamais, elle ne se "perd" pas. Il y a aussi une "trainée rouge" dont je sais pas d'où ça vient.

    Si quelqu'un pourrait me mettre sur la bonne voie ou m'indiquer mes erreurs, ce serait vraiment aimable.

    Cordialement.

    -
    Edité par DimitriVital 25 août 2015 à 19:09:23

    • Partager sur Facebook
    • Partager sur Twitter
      26 août 2015 à 10:18:50

      Salut !

      En effet tu dois est dans le mauvais forum, mais un gentil modérateur va déplacer ton post ;)

      Je ne connais absolument pas Processing, mais ton problème reste un soucis de programmation classique ^^

      Pour la traînée rouge, il faut "rafraichir" l'image, tu dessine toutes les positions de l'ellipse sans jamais "effacer" les précédentes. Pour cela une méthode simple et de dessiner un fond blanc puis l'ellipse a sa nouvelle position a chaque fois.

      Si tu ne perds pas l'ellipse (elle doit s’arrêter dans le coin en bas a droite, et repartir du coin en haut a gauche, si je ne m'abuse) c'est à cause du modulo "a++%height,b++%width" (le %) qui à chaque fois que "a" dépasse "height", "a" va être remis à zéro (idem pour b). Enlève le modulo et ça devrait marcher comme sur des roulette, ainsi a et b vont s’incrémenter et dépasser la taille de ta fenêtre (et donc disparaître).

      Bon courage ! =)

      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        26 août 2015 à 18:29:59

        Salut, voilà comment je ferais en processing (je mets les ordonnées à height pour avoir la courbe y=x, si je le mets à 0, on obtient y=-x).

        Pour le refresh, il suffit donc de refaire le background dans le draw, et enlever les modulo comme précisé avant.

        float RADIUS = 20,x,y;
        
        void setup(){
          size(400,400);
          x=0;
          y=height;
        }
        
        void draw(){
          background(127);
          fill(255,0,0);
          ellipse(x++,--y,RADIUS,RADIUS);
        }



        • Partager sur Facebook
        • Partager sur Twitter
          27 août 2015 à 18:03:25

          Bonsoir, merci beaucoup pour vos réponses, c'est un réel plus pour moi.
          • Partager sur Facebook
          • Partager sur Twitter

          Programmation de base Processing

          × 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