Instructions

74
hm = (h + m / 60.0) * 5 Die Variable hm speichert den Winkel des Stundenzeigers in Minuteneinheiten, wie
sie im gesamten Programm verwendet werden. Dazu wird zur aktuellen Stunde 1/60 des Minutenwerts
addiert. In jeder Minute bewegt sich der Stundenzeiger um 1/60 einer Stunde weiter. Der errechnete Wert
wird mit
5 multipliziert, da der Stundenzeiger in einer Stunde fünf Minuteneinheiten auf dem Zifferblatt vor-
rückt.
if s1 <> s: Die Dauer eines Schleifendurchlaufs im Programm ist nicht bekannt. Für die Analoguhr bedeutet
dies, dass die Grafik nicht bei jedem Schleifendurchlauf aktualisiert werden muss, sondern nur, wenn die
aktuelle Sekunde eine andere ist als die zuletzt gezeichnete. Dazu wird später im Programm die gezeichnete
Sekunde in der Variablen
s1 gespeichert, die aktuelle Sekunde steht immer in der Variablen s.
Wenn sich die Sekunde gegenüber der zuletzt gezeichneten verändert hat, wird mit den nun folgenden
Anweisungen die Grafik der Uhr aktualisiert. Hat sie sich nicht verändert, braucht die Grafik nicht aktualisiert
zu werden, und die Schleife startet von Neuem mit einer weiteren Abfrage der aktuellen Systemzeit.
pygame.draw.circle(FELD, WEISS, MP, 182)
Als Erstes wird eine weiße Kreisfläche gezeichnet, die die Uhrzeiger restlos überdeckt. Der Radius ist mit 182
Pixeln etwas größer als der längste Zeiger, damit keine Reste davon mehr stehen bleiben. Einen vollflächigen
Kreis zu zeichnen, ist deutlich einfacher, als den zuletzt gezeichneten Zeiger wieder pixelgenau zu überma-
len.
pygame.draw.line(FELD, SCHWARZ, MP, punkt(120, hm), 6)
Diese Zeile zeichnet den Stundenzeiger als Linie mit einer Breite von 6 Pixeln vom Mittelpunkt aus 120 Pixel
lang im Winkel, der durch die Variable
hm angegeben wird. Die Funktion pygame.draw.line() wurde bis-
her nicht verwendet. Sie benötigt fünf Parameter:
Surface
gibt die Zeichenfläche an, auf der gezeichnet wird, im Beispiel das FELD.
Farbe
gibt die Farbe des Kreises an, im Beispiel die zuvor definierte Farbe SCHWARZ.
Anfangspunkt
gibt den Anfangspunkt der Linie an, im Beispiel den Mittelpunkt der Uhr.
Endpunkt
gibt den Endpunkt der Linie an, im Beispiel wird dieser mit der Funktion punkt() aus dem
Winkel des Stundenzeigers errechnet.
Dicke
gibt die Linienstärke an.
Die gleiche Funktion zeichnet auch die anderen beiden Zeiger der Uhr.
pygame.draw.line(FELD, SCHWARZ, MP, punkt(170, m), 4)
Diese Zeile zeichnet den Minutenzeiger als Linie mit einer Breite von 4 Pixeln vom Mittelpunkt aus 170 Pixel
lang im Winkel, der durch den Minutenwert angegeben wird.
pygame.draw.line(FELD, ROT, MP, punkt(180, s), 2)