Auteur Sujet: TCO avec Processing 4.2  (Lu 17872 fois)

Dom59

  • Newbie
  • *
  • Messages: 21
    • Voir le profil
Re : TCO avec Processing 4.2
« Réponse #15 le: avril 21, 2023, 02:55:14 pm »
Bonjour,

Dans l'onglet "Tco1" qui est l'ossature à mon sens du TCO,

il y a bien comme variable: void draw;
je l'ai donc modifié comme prévu et il me dit que le variable "temps" et "cli" n'existe pas.

void draw() {
background(GRIS_FOND);      // couleur du fond
  tco.dessiner();             // dessin du tco

if (millis()-temps>=500) { cli=!cli; temps=millis(); } // bascule toutes les 1/2 secondes (500 ms)
  boolean cli=false; // bascule
int temps=0; // ancien temps
}

Et dans l'onglet "Paves" il me dit que le variable "cli" n'existe pas.

class PaveSignalPn extends Pave {
  int feuPn;                                        // couleur du feu pour le tco

  PaveSignalPn(int f) {                            // constructeur
    super(new FormeSimple(),                       // coordonnées de la cible
          new FormeFeu(),
          new FormeDroit());
    feuPn=f;
  }

  void dessiner() {
    formes[1].dessiner(GRIS_FONCE);              // cible
    formes[1].dessiner(cli?GRIS:feuPn);   // feu
    formes[2].dessiner(couleur);                 // voie
  }
 
  Pave manoeuvrer(boolean b) {                   // pour manoeuvres par clic
    switch (feuPn) {
      case ROUGE:  feuPn=GRIS; break;
      case GRIS:   feuPn=couleur; break;
    }
    return this;
  }
}

Je pense ne pas être loin de la vérité....

Cordialement,
Dominique,



Pierre59

  • Sr. Member
  • ****
  • Messages: 346
    • Voir le profil
Re : TCO avec Processing 4.2
« Réponse #16 le: avril 21, 2023, 03:56:06 pm »
Il faut remplacer le   void draw() {   par le bout de programme fourni

Pierre

Dom59

  • Newbie
  • *
  • Messages: 21
    • Voir le profil
Re : TCO avec Processing 4.2
« Réponse #17 le: avril 21, 2023, 04:37:08 pm »
bonjour Pierre,
le pavé est-il bon?

Dominique,

Pierre59

  • Sr. Member
  • ****
  • Messages: 346
    • Voir le profil
Re : TCO avec Processing 4.2
« Réponse #18 le: avril 22, 2023, 11:15:07 am »
Faut essayer !

Pierre

Dom59

  • Newbie
  • *
  • Messages: 21
    • Voir le profil
Re : TCO avec Processing 4.2
« Réponse #19 le: avril 23, 2023, 11:24:55 am »
Bonjour,

après de nombreuses modifications, cela fonctionne sauf qu'il me met des feux fixes au droit du Pn (gris fixe et clic souris = rouge fixe),  je pense qu'il faut que je modifie le pavé manœuvrer ( boolean b) dans PaveSignalPn et là, je coince.

PaveSignal
 
class PaveSignal extends Pave {
  int feu;                                        // couleur du feu pour le tco

  PaveSignal(int f) {                            // constructeur
    super(new FormeSimple(3.4,3, 3.4,0.4, 6,0.4, 6,-1, 9,-1, 9,2, 6,2, 6,0.6, 3.6,0.6, 3.6,3),  // coordonnées du mât et de la cible
          new FormeFeu(),
          new FormeDroit());
    feu=f;
  }
    boolean  cli=false;
        int temps=0;

  void draw() {
     
       if (millis()-temps>=500) { cli=!cli; temps=millis(); }     
}
  void dessiner() {
    formes[0].dessiner(GRIS_FONCE);              // cible et mat
    formes[1].dessiner(feu);                      // feu
    formes[2].dessiner(couleur);                 // voie
                                                 // for (Forme f : retraits) f.dessiner(GRIS_FOND);// dessin des retraits
  }
  Pave manoeuvrer(boolean b) {                   // pour manoeuvres par clic
    switch (feu) {
      case ROUGE:  feu=VERT; break; P
      case VERT:   feu=ROUGE; break;
      case VIOLET: feu=BLANC; break;
      case BLANC:  feu=VIOLET ; break;
      case ROUGE_FONCE:  feu=JAUNE; break;
      case JAUNE:   feu=ROUGE_FONCE; break;
    }
    return this;
  }
}

PaveSignalPn

class PaveSignalPn extends Pave {
  int feuPn;                                        // couleur du feu pour le tco

  PaveSignalPn(int f) {                            // constructeur
    super(new FormeSimple(),                       // coordonnées de la cible
          new FormeFeu(),
          new FormeDroit());
    feuPn=f;
  }
    boolean  cli=false;
     int temps=0;

  void dessiner() {
    formes[1].dessiner(GRIS_FONCE);              // cible
    formes[1].dessiner(cli?GRIS:feuPn);   // feu
    formes[2].dessiner(couleur);                 // voie
  }
  Pave manoeuvrer(boolean b) {                   // pour manoeuvres par clic
    switch (feuPn) {
      case GRIS:  feuPn=ROUGE; break;
      case ROUGE:  feuPn=GRIS; break;
    }
    return this;
  }
}

Comme le dit Pierre, il me faut mettre: 
Pour éteindre le feu :   feuPn=GRIS    dans manoeuvrer() et Pour allumer le feu :     feuPn=couleur   dans manoeuvrer()
Faut-il conserver l'ensemble du "switch" ou faire autrement ?

Cordialement,
 Dominique,

Pierre59

  • Sr. Member
  • ****
  • Messages: 346
    • Voir le profil
Re : TCO avec Processing 4.2
« Réponse #20 le: avril 24, 2023, 01:54:03 pm »
Bonjour

    boolean  cli=false;
     int temps=0;

cela n'a rien à faire dans  PaveSignalPn, cela empêche de clignoter

Pierre

Dom59

  • Newbie
  • *
  • Messages: 21
    • Voir le profil
Re : TCO avec Processing 4.2
« Réponse #21 le: avril 24, 2023, 04:27:47 pm »
bonjour,

j'ai enlevé:  "boolean  cli=false; int temps=0; "              dans PaveSignalPn,

et à la ligne              "void dessiner()......
                                   formes[1].dessiner(cli?GRIS:feuPn)"

il me dit: "cli" n'existe pas.
Bon ,je m'accroche, je relis pour tenter de comprendre pas à pas, je me motive, une virgule mal placée ou autre, merci Pierre,
Cordialement,
Dominique



Pierre59

  • Sr. Member
  • ****
  • Messages: 346
    • Voir le profil
Re : Re : TCO avec Processing 4.2
« Réponse #22 le: avril 24, 2023, 05:40:11 pm »
j'ai enlevé:  "boolean  cli=false; int temps=0; "              dans PaveSignalPn,
Ils devraient être juste devant le  draw() !!!

Pierre

Dom59

  • Newbie
  • *
  • Messages: 21
    • Voir le profil
Re : TCO avec Processing 4.2
« Réponse #23 le: avril 24, 2023, 05:49:46 pm »
je l'ai mis dans le paragraphe:
class PaveSignal avec le draw    comme ceci:

    boolean  cli=false;
        int temps=0;
  void draw() {
       if (millis()-temps>=500) { cli=!cli; temps=millis(); }     
                           
et
dans class PaveSignalPn, il a été enlevé

Pierre59

  • Sr. Member
  • ****
  • Messages: 346
    • Voir le profil
Re : Re : TCO avec Processing 4.2
« Réponse #24 le: avril 24, 2023, 06:09:30 pm »
    boolean  cli=false;
        int temps=0;
  void draw() {
       if (millis()-temps>=500) { cli=!cli; temps=millis(); }     

Non cela ne va pas. les 4 ligne ci dessus sont à mettre à la place du draw() dans le premier onglet !!!

et doivent êtres enlevées du  PaveSignal

Pierre

Dom59

  • Newbie
  • *
  • Messages: 21
    • Voir le profil
Re : TCO avec Processing 4.2
« Réponse #25 le: avril 24, 2023, 06:30:12 pm »
Dans le 1er onglet "ossature de Tcos" avec les constantes... puis les variables...
il y a:

void draw() {
  background(GRIS_FOND);      // couleur du fond
  tco.dessiner();             // dessin du tco
 

Dom59

  • Newbie
  • *
  • Messages: 21
    • Voir le profil
Re : TCO avec Processing 4.2
« Réponse #26 le: avril 24, 2023, 06:37:40 pm »
YES, c'est bon,
l'élève progresse,
Merci Pierre