Python: Eine Uhr in Turtle programmieren?

... komplette Frage anzeigen

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)
Antwort bewerten Vielen Dank für Deine Bewertung

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

Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?