User manual

63
def punkt(A, W):
w1 = radians(W * 6 – 90); x1 = int(MX + A * cos(w1))
y1 = int(MY + A * sin(w1)); return((x1, y1))
Funkcija uporablja dva parametra: A je razdalja želene točke od središča, W pa je kot glede
na središče. Za poenostavitev prikaza v primeru ure vzamemo kot v smeri urnega kazalca
glede na navpično smer za 12:00. Kot se prav tako ne preda funkciji v stopinjah, temveč v
minutah, in sicer 1/60 polnega kroga. Takšne predpostavke prihranijo številne vmesne
izračune.
Tako kot večina programskih jezikov Python računa kotne enote v ločni meri in ne v
stopinjah. Funkcija radian() iz knjižnice math preračuna stopinje v ločno mero. Pri tem se
podatek o kotu v minutah, ki je uporabljen v programu, pomnoži s 6, da se dobi podatek o
stopinjah, nato pa se 90 stopinj odšteje, tako da smer 0 kaže navpično navzgor, tako kot 0-ta
minuta vsake ure. Ta kot, preračunan v ločno mero, se za nadaljnje izračune znotraj funkcije
shrani v spremenljivko w1.
Prikaz analogne ure temelji na kotnih funkcijah sinus in kosinus. Z njuno pomočjo se iz kota
točke v ločni meri glede na središče (w1) določijo njegove koordinate v pravokotnem
koordinatnem sistemu (x1 in y1). Koordinate središča se prevzamejo iz spremenljivk MX in
MY , ki sta bili definirani izven funkcije in ki imata splošno veljavnost. Razdalja točke od
središča se posreduje funkciji prek parametra A. Funkcija int() iz rezultata izračuna
celoštevilsko vrednost, saj so lahko koordinate slikovnih točk podane samo kot celo število.
Povratna vrednost funkcije je geometrična točka z izračunanima koordinatama x1 in y1, ki
se tako kot vse točke nahaja v dvojnih narekovajih.
Po definiciji te funkcije se nariše številčnica.
for i in range(60):
pygame.draw.circle(FELD, SCHWARZ, punkt(190, i), 2)
Zanka zaporedoma nariše 60 točk za prikaz minut na krogu. Vse točke se določijo s funkcijo
punkt(). Imajo isto razdaljo od središča, ki je s 190 slikovnimi točkami v štirih kvadrantih še
natančno 10 slikovnih točk oddaljena od roba okna. Točke imajo polmer 2 slikovni točki.
for i in range(12):
pygame.draw.circle(FELD, SCHWARZ, punkt(190, i * 5), 4)
Druga zanka nariše 12 večjih krogov, ki označujejo ure na številčnici. Ti imajo polmer 4
slikovne točke in se preprosto narišejo čez obstoječe kroge ter jih popolnoma prekrijejo.
Simboli za ure si sledijo v razdalji kotov po pet minutnih enot, kar je doseženo z množenjem
s 5 v podatku o kotu, ki se posreduje funkciji.
mainloop = True; s1 = 0
Preden se začne glavna zanka programa, se definirata še dve pomožni spremenljivki, ki sta
potrebni v nadaljnjem poteku. mainloop v zadnjem primeru programa navaja, če naj zanka
deluje naprej ali želi uporabnik zaključiti program. s1 shrani nazadnje prikazano sekundo.
while mainloop:
zeit = time.localtime()