Hier ist mein Programm. Ich weiß ich habe das viel zu kompleziert programmiert, aber ich war damals nicht der Beste.:
"""Uhr"""
import turtle
import time
from turtle import *
speed(40)
##### Funktionen - Anfang #####
stunde = int(time.strftime("%H"))
minute = int(time.strftime("%M"))
sekunde = int(time.strftime("%S"))
#Springt an die Position x,y ohne zu zeichnen
def gotoxy(x,y):
pu()
goto(x,y)
pd()
def mlguhr(radius):
gotoxy(-300,radius+20)
color('pink')
write('by Laurence', font=('Ravie', 55))
gotoxy(0,0)
def ziffernblatt(radius):
dot() # zeichnet einen Punkt
fd(radius)
bk(radius*2)
fd(radius*2)
lt(90)
circle(radius,180)
zahlen(radius)
striche(radius,15)
def zahlen(radius):
setheading(90)
gotoxy(-11,-11) #Versatz, weil die Schrift rechts hochgestellt von der Position der Turtle ist
for zahl in range(12,0,-1):
pu()
fd(radius+15)
pd()
color('green')
write(zahl, font=('Harlow Solid Italic', 16))
pu()
bk(radius+15)
pd()
lt(180/12)
def striche(radius, laenge):
setheading(90)
gotoxy(0,0)
for i in range(60):
pu()
if i%15 == 0:
width(3)
color('red')
fd(radius-(2*laenge))
pd()
fd(2*laenge)
elif i%5 == 0:
width(2)
color('green')
fd(radius-(1.5*laenge))
pd()
fd(1.5*laenge)
else:
width(1)
color('pink')
fd(radius-laenge)
pd()
fd(laenge)
pu()
bk(radius)
rt(180/60)
pd()
def zeiger(laenge, dicke, farbe):
width(dicke)
color(farbe)
fd(laenge)
stamp()
bk(laenge)
##### Funktionen - Ende #####
##### Hauptprogramm #####
radius = int(textinput("Analoge Uhr", "Radius für das Ziffernblatt"))
tracer(0)
mlguhr(radius)
ziffernblatt(radius)
tracer(1)
#Stundenzeiger
def Stundenzeiger():
setheading(90)
minutenbeigabe=minute*(180/12)/60
rt(stunde*180/12+minutenbeigabe) # Winkel für die Stunde
zeiger(1.8*radius/3, 3, 'red')
#Stundenzeigerweg
def Stundenzeigerweg(): #bei update() blinkt es
setheading(90)
minutenbeigabe=minute*(180/12)/60
rt(stunde*180/12+minutenbeigabe) # Winkel für die Stunde
zeiger(1.8*radius/3, 3, 'white')
#Minutenzeiger
def Minutenzeiger():
setheading(90)
sekundenbeigabe=sekunde*(180/60)/60
rt(minute*180/60+sekundenbeigabe) # Winkel für die Minute
zeiger(7*radius/9, 2, 'green')
#Minutenzeigerweg
def Minutenzeigerweg():#bei update() blinkt es
setheading(90)
sekundenbeigabe=sekunde*(180/60)/60
rt(minute*180/60+sekundenbeigabe) # Winkel für die Minute
zeiger(7*radius/9, 2, 'white')
#Sekundenzeiger
def Sekundenzeiger():
setheading(90)
rt(sekunde*180/60) # Winkel für die Sekunde
zeiger(7*radius/8, 1, 'black')
#Sekundenzeigerweg
def Sekundenzeigerweg(): #bei update() blinkt es
setheading(90)
rt(sekunde*180/60) # Winkel für die Sekunde
zeiger(7*radius/8, 1, 'white')
ht() #macht die Turtle invisible
#zeichnet Zeiger
tracer(0)
Stundenzeiger()
Minutenzeiger()
Sekundenzeiger()
tracer(1)
#aktualisiert Zeiger
while True:
tracer(0)
Sekundenzeigerweg()
Minutenzeigerweg()
Stundenzeigerweg()
stunde = int(time.strftime("%I"))
minute = int(time.strftime("%M"))
sekunde = int(time.strftime("%S"))
Stundenzeiger()
Minutenzeiger()
Sekundenzeiger()
tracer(1)