Python: Eine Uhr in Turtle programmieren?

2 Antworten

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)

Kannst du deinen Code bitte nochmal bei pastebin posten und hier den Link zur Verfügung stellen?