Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
schule:klassen:2017:10b:kap6:komplett [2017/08/28 08:22] – [Die Klasse Sekundenzeiger] martinschule: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("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);
 +//        }
 +//    }
 +
 +}
 +</code>
 +
 +===== 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, 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);
 +    }
 +
 +
 +}
 +</code>
Drucken/exportieren
QR-Code
QR-Code schule:klassen:2017:10b:kap6:komplett (erstellt für aktuelle Seite)