Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.


Messages - Dom59

Pages: [1] 2
1
Bonjour,
la led étant un PaveDroitZoneA avec ellipse rouge (occupation) ou grise située à côté du PaveAiguilleDroite, le "clic" souris étant indépendant de la led lorsque je "clic" sur l'aiguille et vise versa,

j'ai tenté cela dans l'onglet "Paves" mais ce n'est pas bon.

class PaveAiguilleDroite extends PaveAiguilleSimple {
  PaveAiguilleDroite() { super(new FormeArc45(),new FormeDroit()); }             // constructeur

}
   
if (PaveDroitZoneA(A2d;c10;l20) == HIGH && PaveDroitZoneA(A2;c11;l20) == LOW) {  // Pave de zone avec sa del
    PaveAiguilleDroite(FormeDroit); // allume la del du TCO
else {
    PaveAiguilleDroite(FormeArc;c11;l19); // étéint la del du TCO
   
}

Dominique


2
Bonjour Pierre,
actuellement, lorsque je "clic" avec la souris, sur le "Pave" de l'aiguille, celle-ci change de position, soit en position droite, soit en position déviée. Ce que je voudrais essayer, serait qu'au "clic" de la souris, il y ait en plus l'allumage de la "led" suivant la position de l'aiguille,
merci Pierre,

Dominique

3
Bonjour à tous,
mon TCO avance pas à pas (merci Pierre), l'étape suivante serait de pouvoir relier la position de l'aiguille  avec sa led d'occupation en "Processing".
exemple:
Aiguille A2 Droite; A2 (led verte), A2d (led rouge); Aiguillage en position normale,
Aiguille A2 Déviée; A2 (led rouge), A2d (led verte); Aiguillage en position déviée,

Voici l'onglet "Paves"pour l'aiguille:
class PaveAiguilleDroite extends PaveAiguilleSimple {
  PaveAiguilleDroite() { super(new FormeArc45(),new FormeDroit()); }
L'onglet "Paves" pour la led:
class PaveDroitZoneA extends PaveDroit {
  boolean occupe=false;
 
  Pave manoeuvrer(boolean b) { occupe=!occupe; return this; }

  void dessiner() {
    super.dessiner();
    pushStyle();
    strokeWeight(ZOOM/2.8); strokeCap(SQUARE);
    if (occupe) stroke(ROUGE); else stroke(VERT);  // couleur des signaux
    ellipse(4.5,4.5, 1.1,1.1);
    popStyle();
  }
Et l'onglet "TCO"
    paves[c++][l]=new PaveAiguilleDroite().rotation(4);
    paves[c++][l]=new PaveDroitZoneA();
    paves[c++][l]=new PaveTexte("A2",3,GRIS_FONCE);
    paves[c++][l]=new PaveDroit();

Question:
comment faire si ce n'est pas trop compliqué ?
Le but étant d'utiliser la souris de l'ordi (par clic ) qui pourrait aussi être utilisée par la suite via l'usb + Arduino + le petit réseau, sauf erreur de ma part,
D'avance je vous remercie,
Dominique,

4
Merci Pierre,
il me semblait bien qu'il faille relier celui-ci à un Arduino via l'usb.
Dominique

5
bonjour Pierre,
merci,
mais après lecture, j'ai bien compris que les erreurs étaient en rouge, et justement, il m'indique ceci:
"ArrayIndexOutOfBoundsExeception: Index 2 out of bounds for length 0"
- Index de tableau hors limites Exception : index 2 hors limites pour la longueur 0 -
concerne les ports série me semble-t-il !
De ce fait je ne peux pas l'exécuter.

Dominique

6
bonjour à tous,

j'ai téléchargé la version 4.1 de décembre 2016,
et lorsque j'exécute, il y a:
paves ligne 37, le c n'est pas utilisé et
formes ligne 25, le n n'est pas utilisé,
pourriez-vous m'aider,
merci Dominique

7
YES, c'est bon,
l'élève progresse,
Merci Pierre

8
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
 

9
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é

10
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



11
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,

12
bonjour Pierre,
le pavé est-il bon?

Dominique,

13
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,



14
bonjour Pierre,
j'ai mis la formule concernant le clic mais j'ai dû zapper quelque chose ... dans l'onglet "Paves",

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(feuPn);                    // feu
    formes[2].dessiner(couleur);                 // voie
                                                 // for (Forme f : retraits) f.dessiner(GRIS_FOND);// dessin des retraits
  }
 
   boolean cli=false;           // bascule
 int temps=0;                  // ancien temps

 void draw() {
  if (millis()-temps>=500) { cli=!cli; temps=millis(); }       // bascule toutes les 1/2 secondes (500 ms)
  // ...
   
 }
 
  Pave manoeuvrer(boolean b) {                   // pour manoeuvres par clic
    switch (feuPn) {
      case ROUGE:  feuPn=GRIS; break;
      case GRIS:   feuPn=ROUGE; break;
     
    }
    return this;
  }
}

Cordialement
 Dominique,


15
Bonjour à tous,
en complément du "PaveDroitZone" réalisé par Pierre et utilisable sur la ligne, j'ai fait celui qui est utilisable pour la colonne:

class PaveDroitColonneZone extends PaveDroit {
  boolean occupe=false;
 
  Pave manoeuvrer(boolean b) { occupe=!occupe; return this; }

  void dessiner() {
    super.dessiner();
    pushStyle();
    strokeWeight(ZOOM/3); strokeCap(SQUARE);
    if (occupe) stroke(ROUGE); else stroke(JAUNE);  // couleur des signaux
    line(4.5,1, 4.5,8);
    popStyle();
  }
}

Si cela peut aider,
Cordialement
Dominique

Pages: [1] 2