User manual

64
Sedaj se začne glavna zanka programa, ki v vsakem prehodu ne glede na to, kako dolgo
traja – zapiše trenutni čas v objekt zeit. Pri tem se uporabi funkcija time.localtime() iz
knjižnice time. Rezultat je podatkovna struktura, ki je sestavljena iz različnih posameznih
vrednosti.
s = zeit.tm_sec; m = zeit.tm_min; h = zeit.tm_hour
Tri vrednosti, ki so relevantne za kazalce – sekunde, minute in ure – se kot struktura zapišejo
v tri spremenljivke s, m in h.
if h > 12:
h = h – 12
Analogne ure prikazujejo samo dvanajst ur. Funkcija time.localtime() vse podatke o
času nudi v 24-urnem formatu. Podatki o času popoldne se torej preprosto odštejejo za 12
ur.
Prikaz časa pri analognih urah
V odvisnosti od uporabljenega mehanizma pri analognih urah obstajata dva različna prikaza.
Pri pravih analognih urah minutni kazalec izvaja enakomerno krožno premikanje, pri urah z
digitalnim krmiljenjem, kot so na primer ure na železniških postajah, pa ob polni minuti skoči
za celo minuto naprej. Drugi postopek ima to prednost, da je možno čas z enim pogledom
odčitati do minute natančno. Delčki minute v vsakdanjiku ponavadi niso pomembne. Za naš
program ure prav tako uporabljamo ta postopek. Ravno nasprotno pa urni kazalec mora
izvajati enakomerno krožno premikanje. Tukaj bi bilo namreč zelo nenavadno in
nepregledno, če bi kazalec vsako polno uro skočil naprej za celo uro.
hm = (h + m / 60.0) * 5
Spremenljivka hm shrani kot urnega kazalca v minutnih enotah, ki se uporabljajo v celotnem
programu. Pri tem se k aktualnim uram prišteje 1/60 minutne vrednosti. V vsaki minuti se urni
kazalec premakne naprej za 1/60 ure. Izračunana vrednost se pomnoži s 5, saj se urni
kazalec v eni uri pomakne naprej na številčnici za pet minutnih enot.
if s1 <> s:
Trajanje enega prehoda zanke v programu ni znano. Za analogno uro to pomeni, da se
grafika ne posodablja pri vsakem prehodu zanke, temveč samo takrat, ko je aktualna
sekunda drugačna od nazadnje narisane. Pri tem se kasneje v programu narisana sekunda
shrani v spremenljivko s1, aktualna sekunda pa se vedno nahaja v spremenljivki s.
Ko se sekunda v primerjavi z nazadnje narisano sekundo spremeni, se grafika ure posodobi
s pomočjo naslednjih navodil. Če se ne spremeni, potem posodabljanje grafike ni potrebno in
zanka se začne od začetka z nadaljnjo poizvedbo glede aktualnega sistemskega časa.
pygame.draw.circle(FELD, WEISS, MP, 182)
Najprej se nariše bela površina kroga, ki popolnoma prekrije kazalce. Polmer je s 182
slikovnimi točkami malce večji od najdaljšega kazalca, da ga popolnoma prekrije. Risanje
kroga čez celotno površino je bistveno enostavnejše od prebarvanja nazadnje narisanega
kazalca do slikovne točke natančno.
pygame.draw.line(FELD, SCHWARZ, MP, punkt(120, hm), 6)