Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende Überarbeitung | |||
schule:klassen:2017:10b:kap6:komplett [2017/08/28 08:22] – [Die Klasse Sekundenzeiger] martin | schule:klassen:2017:10b:kap6:komplett [2021/12/29 10:40] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ===== Die Klasse Uhr: ===== | ||
+ | <code java> | ||
+ | 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(" | ||
+ | |||
+ | ticksZeichnen(); | ||
+ | zeigerZeichnen(); | ||
+ | |||
+ | Timer timer = new sge.Timer(this, | ||
+ | timer.start(); | ||
+ | |||
+ | } | ||
+ | |||
+ | public void timerSignalVerarbeiten(){ | ||
+ | |||
+ | sekundenschritt(); | ||
+ | |||
+ | } | ||
+ | |||
+ | private void sekundenschritt(){ | ||
+ | |||
+ | sekundenzeiger.drehenUm(mitteX, | ||
+ | minutenzeiger.drehenUm(mitteX, | ||
+ | stundenzeiger.drehenUm(mitteX, | ||
+ | |||
+ | } | ||
+ | |||
+ | private void zeigerZeichnen() | ||
+ | { | ||
+ | stundenzeiger = new Linie(mitteX, | ||
+ | stundenzeiger.setRandstaerke(12); | ||
+ | |||
+ | minutenzeiger = new Linie(mitteX, | ||
+ | minutenzeiger.setRandstaerke(8); | ||
+ | |||
+ | sekundenzeiger = new Sekundenzeiger(mitteX, | ||
+ | } | ||
+ | |||
+ | 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, | ||
+ | tick.setFuellfarbe(" | ||
+ | |||
+ | } | ||
+ | } | ||
+ | |||
+ | // public void ziffernZeichnen(){ | ||
+ | // for(int i = 0; i < 12; i++){ | ||
+ | // float winkel = 30*i; | ||
+ | // Textfeld t = new Textfeld(mitteX, | ||
+ | // t.setAusrichtungX(Ausrichtung.zentriert); | ||
+ | // t.setAusrichtungY(Ausrichtung.zentriert); | ||
+ | // t.drehenUm(mitteX, | ||
+ | // } | ||
+ | // } | ||
+ | |||
+ | } | ||
+ | </ | ||
+ | |||
+ | ===== Die Klasse Sekundenzeiger ===== | ||
+ | <code java> | ||
+ | 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, | ||
+ | kreisMitte.setFuellfarbe(" | ||
+ | |||
+ | double mitteYAussen = mitteY - radius * 0.6; | ||
+ | |||
+ | kreisAussenRot = new Kreis(mitteX, | ||
+ | kreisAussenRot.setFuellfarbe(" | ||
+ | |||
+ | dreieck = new Dreieck(mitteX, | ||
+ | dreieck.setFuellfarbe(" | ||
+ | |||
+ | kreisAussenWeiss = new Kreis(mitteX, | ||
+ | kreisAussenWeiss.setFuellfarbe(" | ||
+ | |||
+ | } | ||
+ | |||
+ | public void drehenUm(double mitteX, double mitteY, double winkel){ | ||
+ | kreisMitte.drehenUm(mitteX, | ||
+ | kreisAussenWeiss.drehenUm(mitteX, | ||
+ | kreisAussenRot.drehenUm(mitteX, | ||
+ | dreieck.drehenUm(mitteX, | ||
+ | } | ||
+ | |||
+ | |||
+ | } | ||
+ | </ |