Instructions

72
FELD = pygame.display.set_mode((400, 400)); FELD.fill(WEISS)
Ein 400 x 400 Pixel großes Fenster wird geöffnet und komplett mit Weiß gefüllt.
MX = 200; MY = 200; MP = ((MX, MY))
Drei Variablen legen die Koordinaten des Mittelpunkts fest, auf den bezogen alle weiteren grafischen
Elemente, das Zifferblatt und der Uhrzeiger ausgerichtet werden. Die Variablen
MX und MY enthalten die x-
und y-Koordinaten des Mittelpunkts, die Variable
MP den Mittelpunkt als Punkt, wie er für grafische Funktio-
nen verwendet wird.
Als Nächstes folgt die Definition einer wichtigen Funktion, die anhand des Abstands zum Mittelpunkt und
eines Winkels Punkte im Koordinatensystem berechnet. Diese Funktion wird für die Darstellung sowohl des
Zifferblatts als auch der Uhrzeiger mehrfach im Programm aufgerufen.
def punkt(A, W):
w1 = radians(W * 6 – 90); x1 = int(MX + A * cos(w1))
y1 = int(MY + A * sin(w1)); return((x1, y1))
Die Funktion verwendet zwei Parameter: A ist der Abstand des gewünschten Punkts vom Mittelpunkt, W der
Winkel bezogen auf den Mittelpunkt. Um die Darstellung im Fall der Uhr zu vereinfachen, nehmen wir den
Winkel im Uhrzeigersinn bezogen auf die senkrechte 12-Uhr-Richtung an. Der Winkel wird auch nicht in
Grad, sondern in Minuten, 1/60 eines Vollkreises, an die Funktion übergeben. Solche Annahmen sparen viele
Zwischenberechnungen.
Python rechnet wie die meisten Programmiersprachen Winkeleinheiten in Bogenmaß und nicht in Grad. Die
Funktion
radian() aus der math-Bibliothek rechnet Grad in Bogenmaß um. Dazu wird die im Programm
verwendete Winkelangabe in Minuten mit 6 multipliziert, um auf Grad zu kommen, und anschließend wird
90 Grad subtrahiert, damit die 0-Richtung senkrecht nach oben zeigt, wie die Minute 0 jeder Stunde. Dieser
Winkel umgerechnet in Bogenmaß wird für weitere Berechnungen innerhalb der Funktion in der Variablen
w1 gespeichert.
Die Anzeige einer Analoguhr basiert auf den Winkelfunktionen Sinus und Kosinus. Damit werden aus dem
Winkel eines Punkts im Bogenmaß gegenüber dem Mittelpunkt (
w1) dessen Koordinaten im rechtwinkligen
Koordinatensystem (
x1 und y1) ermittelt. Die Koordinaten des Mittelpunkts werden aus den Variablen MX
und
MY übernommen, die außerhalb der Funktion definiert wurden und global gelten. Der Abstand des
Punkts vom Mittelpunkt wird über den Parameter
A der Funktion übergeben. Die Funktion int() ermittelt
aus dem Ergebnis den Integerwert (Ganzzahl), da Pixelkoordinaten nur als Integer angegeben werden
können.
Der Rückgabewert der Funktion ist ein geometrischer Punkt mit den errechneten Koordinaten
x1 und y1, der
wie alle Punkte in doppelte Klammern gesetzt wird.
Nach der Definition dieser Funktion wird das Zifferblatt gezeichnet.