Ampelschaltung

Überblick

Aufbau der Ampelschaltung

Klassendiagramm Ampelschaltung.png
<!DOCTYPE html><html><body>
<canvas id="myCanvas" width="350" height="300" style="border:1px solid #d3d3d3;">Your browser does not support the HTML canvas tag.</canvas><button onclick="Ampelschaltung1.ampelnSchalten()">Schalten</button><script>
//JavaScript wird in der Variablen c die Zeichenfläche und in der Zeichenfläche in der Variablen ctx die geometrischen Objekte Rechteck und Kreise zur Verfügung gestellt.var c = document.getElementById("myCanvas");var ctx = c.getContext("2d");
//Klassen für die Ampelschaltung//Klasse für die Objekte Gehäuse//mit der Methode Zeichnenclass Rechteck{  constructor(ecke_x,ecke_y,breite, hoehe) {    this.ecke_x=ecke_x;    this.ecke_y=ecke_y;    this.breite = breite;    this.hoehe = hoehe;  }  zeichnen(){    ctx.beginPath();    ctx.rect(this.ecke_x, this.ecke_y, this.breite, this.hoehe);    ctx.stroke();  }}
//Klasse für die Objekte Lichtoben und Lichtunten//mit der Methode zeichnenclass Kreis{  constructor(mittelpunkt_x, mittelpunkt_y, radius,farbe) {    this.mittelpunkt_x = mittelpunkt_x;    this.mittelpunkt_y = mittelpunkt_y;    this.radius = radius;    this.farbe=farbe;   }  zeichnen(){    ctx.beginPath();    ctx.arc(this.mittelpunkt_x,this.mittelpunkt_y,this.radius,0,2*Math.PI);    ctx.fillStyle = this.farbe;    ctx.fill();        ctx.stroke();   } }
//Klasse für die Ampel-Objekte, die aus den Objekt-Attributen Gehäuse und Lichtoben bzw. Lichtunten bestehen//mit der Methode zeichnen und der Methode zustandSchalten für die Zustände rot und gruenclass Ampel{  constructor(ecke_x,ecke_y,zustand){    this.ecke_x=ecke_x;    this.ecke_y=ecke_y;      this.gehaeuse=new Rechteck(this.ecke_x,this.ecke_y,100,200);    this.lichtOben=new Kreis(this.ecke_x+50,this.ecke_y+50,30,this.farbe);    this.lichtUnten=new Kreis(this.ecke_x+50,this.ecke_y+150,30,this.farbe);    this.zustand= zustand;    this.zustandSchalten(this.zustand);  }  zeichnen(){    this.gehaeuse.zeichnen();    this.lichtOben.zeichnen();    this.lichtUnten.zeichnen();  }  zustandSchalten(zustand) {    this.zustand=zustand;    if (this.zustand=="gruen") {      this.lichtOben.farbe="white";      this.lichtUnten.farbe="green";    }    else if (this.zustand=="rot") {      this.lichtOben.farbe="red";      this.lichtUnten.farbe="white";    }  }}//Klasse für das Objekt Fußgängerüberweg (Ampelschaltung1)//mit der Methode zeichnen und der Methode ampelnSchaltenclass Ampelschaltung{  constructor(){    this.Ampel1=new Ampel(40,50,"rot");    this.Ampel2=new Ampel(myCanvas.width-140,50,"gruen");  }  zeichnen(){    this.Ampel1.zeichnen();    this.Ampel2.zeichnen();  }    ampelnSchalten(){    Ampelschaltung1.Ampel1.zustandSchalten("gruen");    Ampelschaltung1.Ampel2.zustandSchalten("rot");    this.zeichnen();    Ampelschaltung1.Ampel1.zustandSchalten("rot");    Ampelschaltung1.Ampel2.zustandSchalten("gruen");    window.setTimeout(function(){Ampelschaltung1.zeichnen();}, 1000);  }}//Ampelschaltung bei Aufruf der Webseite als Objekt Ampelschaltung1 zur Verfügung stellen und die Ampelschaltung zeichnen.Ampelschaltung1=new Ampelschaltung;Ampelschaltung1.zeichnen();</script> 
</body></html>