class PaveButoirDroit extends Pave {
PaveButoirDroit() { // constructeur
super(new FormeSimple(9,2, 7,2, 7,7, 9,7),
new FormeSimple(7,3, 0,3, 0,6, 7,6));
}
}
class PaveButoirDroitFeu extends PaveButoirDroit {
void dessiner() {
super.dessiner();
pushStyle();
strokeWeight(ZOOM/2);
stroke(VIOLET);
point(8,4.5);
popStyle();
}
}
class PaveButoirBiaisFeu extends PaveButoirBiais {
void dessiner() {
super.dessiner();
pushStyle();
strokeWeight(ZOOM/2);
stroke(VIOLET);
point(6.8,2.2);
popStyle();
}
}
class PaveButoirBiais extends Pave {
PaveButoirBiais() { // constructeur
super(new FormeSimple(4,1, 5.75,-0.75, 9.75,3.25, 8,5),
new FormeSimple(-1,8, 5,2, 7,4, 1,10));
}
}
class FormeSimple extends Forme {
FormeSimple(float... xys) { // constructeur
vertex(xys);
}
}
Il faut aussi une FormeSimple.comment faire une barre de signal jaune ou rouge (de moindre taille) avec manoeuvre par clic dans un pavé droit (indication de présence d'un train (rouge) ou voie libre (jaune)) ?Je ne vois pas très bien de quoi il s'agit.
class PaveDroitZone 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);
line(1,4.5, 8,4.5);
popStyle();
}
}
En cliquant dessus il change de couleur.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)
// ...
au début du draw()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
|
j'ai enlevé: "boolean cli=false; int temps=0; " dans PaveSignalPn,Ils devraient être juste devant le draw() !!!
boolean cli=false;
int temps=0;
void draw() {
if (millis()-temps>=500) { cli=!cli; temps=millis(); }