Startseite | Kontakt | Impressum

Material für den Informatikunterricht

Analoguhr

Der etwas längere Quelltext wurde dieses Mal ausgelagert in eine reine Textdatei namens uhr.txt.

Rein äußerlich ist eine Analoguhr auf dem Bildschirm eine animierte Grafik. Das Zifferblatt steht fest, drei Striche bewegen sich in unterschiedlicher Geschwindigkeit. - Soweit, so einfach. Der Teufel steckt wie immer im Detail. Hier nun eine Erklärung, die sich auch als Konstrktionsanleitung lesen lässt: Womit fange ich an, was programmiere ich als nächstes?

  1. Das Zifferblatt ist natürlich ein Kreis, der sauber mit π konstruiert, damit der Igel vom Mittelpunkt aus die Zeiger ablaufen kann. Die Ziffern um den Uhrkreis haben unterschiedliche Breiten (vgl. "1" und "5"); deshalb muss die Prozedur den Ort auf der Kreisbahn speichern, von wo aus der Igel zwölfmal nach außen springt, um die Ziffer zu schreiben.
  2. Anfangs sollten die Zeiger getrost um Punkt 12 Uhr starten.
  3. Der Sekundenzeiger ist ein Strich, der nach einer Sekunde gelöscht wird, dann geht es um - welchen? - Winkel nach rechts und die nächste Sekunde wird angezeigt.
  4. Der Sekundenzeiger schleppt nach jeder Minute den Minutenzeiger mit und dieser den Stundenzeiger.
  5. Minuten- und Stundezeiger sind jeweils etwas breiter und kürzer und haben auch ihre spezifischen Winkel, um die sie weitergehen.
  6. Die Winkel der Zeiger werden als Variable gespeichert, damit Winlogo "weiß", wo es nach einer Minute weitergeht.
  7. Die Uhr wird auf die Systemzeit gestellt. Dabei muss mit der Modulo-Rechenweise (!) vom 24-Stundenformat auf das 12-Stundenformat umgerechnet werden.
  8. Das Ganze funktioniert natürlich schön rekursiv. Die Uhr muss vermutlich bei jedem System neu geeicht werden; im aktuellen Code wartet der Sekundenzeiger immer "10 Zehntelsekunden" (der Befehl PAUSE fehlt im Hilfe-Index); man müsste prüfen, ob das eine wirkliche Sekunde ist.

© Michael Kraus, ab September 2008