package test.informatik10.uhr; import sge.*; /** * Die Klasse Uhr stellt eine Bahnhofsuhr dar * * @author Martin Pabst * @version 16.08.2017 */ public class Uhr implements TimerListener { private double mitteX = 300; private double mitteY = 300; private double radius = 250; private Sekundenzeiger sekundenzeiger; private Linie minutenzeiger; private Linie stundenzeiger; /** * Konstruktor für Objekte der Klasse Uhr */ public Uhr() { Fenster fenster = new Fenster(); fenster.setHintergrundfarbe("weiß"); ticksZeichnen(); // kleine Striche außen am Zifferblatt zeigerZeichnen(); Timer timer = new sge.Timer(this, 1000); timer.start(); } public void timerSignalVerarbeiten(){ sekundenschritt(); } private void sekundenschritt(){ sekundenzeiger.drehenUm(mitteX, mitteY, 6); minutenzeiger.drehenUm(mitteX, mitteY, 0.1); stundenzeiger.drehenUm(mitteX, mitteY, 0.1/12); } private void zeigerZeichnen() { stundenzeiger = new Linie(mitteX, mitteY + 0.2* radius, mitteX, mitteY - radius*4/5); stundenzeiger.setRandstaerke(12); minutenzeiger = new Linie(mitteX, mitteY + 0.2 * radius, mitteX, mitteY - radius*11/12); minutenzeiger.setRandstaerke(8); sekundenzeiger = new Sekundenzeiger(mitteX, mitteY, radius); } private void ticksZeichnen(){ Rechteck tick; for(int i = 0; i < 60; i++){ // Erzeugen eines neuen Rechtecks auf der 12 Uhr-Position: if(i % 5 == 0){ tick = new Rechteck(mitteX - 5, mitteY - radius, 10, radius * 1/7); } else { tick = new Rechteck(mitteX - 3, mitteY - radius, 6, radius * 1/21); } tick.drehenUm(mitteX, mitteY, i*6); tick.setFuellfarbe("schwarz"); } } // public void ziffernZeichnen(){ // for(int i = 0; i < 12; i++){ // float winkel = 30*i; // Textfeld t = new Textfeld(mitteX, mitteY - radius - 30, "" + i%12); // t.setAusrichtungX(Ausrichtung.zentriert); // t.setAusrichtungY(Ausrichtung.zentriert); // t.drehenUm(mitteX, mitteY, winkel); // } // } }
package test.informatik10.uhr; import sge.Dreieck; import sge.Kreis; public class Sekundenzeiger { private Kreis kreisMitte; private Kreis kreisAussenRot; private Kreis kreisAussenWeiss; private Dreieck dreieck; public Sekundenzeiger(double mitteX, double mitteY, double radius){ kreisMitte = new Kreis(mitteX, mitteY, radius/20); kreisMitte.setFuellfarbe("rot"); double mitteYAussen = mitteY - radius * 0.6; kreisAussenRot = new Kreis(mitteX, mitteYAussen, radius/10); kreisAussenRot.setFuellfarbe("rot"); dreieck = new Dreieck(mitteX, mitteY - radius, radius/20, radius*6/5); dreieck.setFuellfarbe("rot"); kreisAussenWeiss = new Kreis(mitteX, mitteYAussen, radius/20); kreisAussenWeiss.setFuellfarbe("weiß"); } public void drehenUm(double mitteX, double mitteY, double winkel){ kreisMitte.drehenUm(mitteX, mitteY, winkel); kreisAussenWeiss.drehenUm(mitteX, mitteY, winkel); kreisAussenRot.drehenUm(mitteX, mitteY, winkel); dreieck.drehenUm(mitteX, mitteY, winkel); } }