User manual

75
Een lus tekent opeenvolgend de
60 minutenpunten op een cirkel. Alle punten worden met de functie punt()
bepaald. Ze hebben de gelijke afstand vanaf het middelpunt, dat met
190 pixels in de vier kwadranten nog
exact 10 pixels van de schermrand is verwijderd. De punten hebben een radius van
2 pixels.
for i in range(12):
pygame.draw.circle(FELD, SCHWARZ, punkt(190, i * 5), 4)
Een tweede lus tekent 12 grotere cirkels, die de uren op de wijzerplaat markeren. Deze hebben een radius
van
4 pixels, worden eenvoudig via de aanwezige cirkels getekend en bedekken deze volledig. De
uursymbolen volgen op een hoekafstand van vijf minuteneenheden op elkaar, dat door de vermenigvuldiging
met
5 in de hoekinformatie, die aan de functie wordt overgedragen, wordt bereikt.
mainloop = True; s1 = 0 Voordat de hoofdlus het programma start, worden nog twee hulpvariabelen
gedefinieerd, die in het volgende verloop nodig zijn.
mainloop geeft evenals in het laatste
programmavoorbeeld weer, of de lus verder moet lopen, of dat de gebruiker het programma wil beëindigen.
s1 slaat de als laatste weergegeven seconde op.
while mainloop:
zeit = time.localtime()
Nu start de hoofdlus het programma, dat in iedere doorloop, onafhankelijk van hoe lang hij duurt, de actuele
tijd in het object
zeit schrijft. Hiervoor wordt de functie time.localtime() uit de time-bibliotheek
gebruikt. Het resultaat is een gegevensstructuur, die uit verschillende individuele waarden bestaat.
s = zeit.tm_sec; m = zeit.tm_min; h = zeit.tm_hour
De drie voor de wijzers relevante waarden, seconden, minuten en uren, worden uit de structuur in drie
variabelen
s, m en h geschreven.
if h > 12:
h = h – 12
Analoge klokken geven slechts twaalf uren weer. De functie time.localtime() levert alle tijdsaanduidingen
in 24-uur-formaat. Bij tijdsaanduidingen na 12 uur 's middags worden dus eenvoudig
12 uren afgetrokken.
Tijdweergave bij analoge klokken
Afhankelijk van het gebruikte mechaniek zijn er twee verschillende weergaven bij analoge klokken. Bij
werkelijk analoog lopende klokken voert de minutenwijzer een gelijkvormige cirkelbeweging uit, bij
digitaal aangestuurde klokken, zoals bijvoorbeeld stationsklokken, springt hij op de volle minuut een
volledige minuut vooruit. De laatste werkwijze heeft als voordeel, dat de tijd beter in een oogopslag op de
minuut nauwkeurig kan worden gelezen. Breukdelen van minuten zijn in het dagelijkse leven doorgaans
niet belangrijk. Wij gebruiken voor ons urenprogramma eveneens dezelfde werkwijze. De uurwijzer moet
echter een gelijkvormige cirkelbeweging uitvoeren. Het zou hier zeer vreemd en onoverzichtelijk zijn,
wanneer hij elk hele uur een uur vooruit springt.
hm = (h + m / 60.0) * 5 De variabele hm slaat de hoek van de urenwijzers op in minuteneenheden, zoals ze in
het hele programma worden gebruikt.. Hiervoor wordt voor het actuele uur 1/60 van de minutenwaarde