17db96d56Sopenharmony_ci#!/usr/bin/env python3 27db96d56Sopenharmony_ci# -*- coding: cp1252 -*- 37db96d56Sopenharmony_ci""" turtle-example-suite: 47db96d56Sopenharmony_ci 57db96d56Sopenharmony_ci tdemo_clock.py 67db96d56Sopenharmony_ci 77db96d56Sopenharmony_ciEnhanced clock-program, showing date 87db96d56Sopenharmony_ciand time 97db96d56Sopenharmony_ci ------------------------------------ 107db96d56Sopenharmony_ci Press STOP to exit the program! 117db96d56Sopenharmony_ci ------------------------------------ 127db96d56Sopenharmony_ci""" 137db96d56Sopenharmony_cifrom turtle import * 147db96d56Sopenharmony_cifrom datetime import datetime 157db96d56Sopenharmony_ci 167db96d56Sopenharmony_cidef jump(distanz, winkel=0): 177db96d56Sopenharmony_ci penup() 187db96d56Sopenharmony_ci right(winkel) 197db96d56Sopenharmony_ci forward(distanz) 207db96d56Sopenharmony_ci left(winkel) 217db96d56Sopenharmony_ci pendown() 227db96d56Sopenharmony_ci 237db96d56Sopenharmony_cidef hand(laenge, spitze): 247db96d56Sopenharmony_ci fd(laenge*1.15) 257db96d56Sopenharmony_ci rt(90) 267db96d56Sopenharmony_ci fd(spitze/2.0) 277db96d56Sopenharmony_ci lt(120) 287db96d56Sopenharmony_ci fd(spitze) 297db96d56Sopenharmony_ci lt(120) 307db96d56Sopenharmony_ci fd(spitze) 317db96d56Sopenharmony_ci lt(120) 327db96d56Sopenharmony_ci fd(spitze/2.0) 337db96d56Sopenharmony_ci 347db96d56Sopenharmony_cidef make_hand_shape(name, laenge, spitze): 357db96d56Sopenharmony_ci reset() 367db96d56Sopenharmony_ci jump(-laenge*0.15) 377db96d56Sopenharmony_ci begin_poly() 387db96d56Sopenharmony_ci hand(laenge, spitze) 397db96d56Sopenharmony_ci end_poly() 407db96d56Sopenharmony_ci hand_form = get_poly() 417db96d56Sopenharmony_ci register_shape(name, hand_form) 427db96d56Sopenharmony_ci 437db96d56Sopenharmony_cidef clockface(radius): 447db96d56Sopenharmony_ci reset() 457db96d56Sopenharmony_ci pensize(7) 467db96d56Sopenharmony_ci for i in range(60): 477db96d56Sopenharmony_ci jump(radius) 487db96d56Sopenharmony_ci if i % 5 == 0: 497db96d56Sopenharmony_ci fd(25) 507db96d56Sopenharmony_ci jump(-radius-25) 517db96d56Sopenharmony_ci else: 527db96d56Sopenharmony_ci dot(3) 537db96d56Sopenharmony_ci jump(-radius) 547db96d56Sopenharmony_ci rt(6) 557db96d56Sopenharmony_ci 567db96d56Sopenharmony_cidef setup(): 577db96d56Sopenharmony_ci global second_hand, minute_hand, hour_hand, writer 587db96d56Sopenharmony_ci mode("logo") 597db96d56Sopenharmony_ci make_hand_shape("second_hand", 125, 25) 607db96d56Sopenharmony_ci make_hand_shape("minute_hand", 130, 25) 617db96d56Sopenharmony_ci make_hand_shape("hour_hand", 90, 25) 627db96d56Sopenharmony_ci clockface(160) 637db96d56Sopenharmony_ci second_hand = Turtle() 647db96d56Sopenharmony_ci second_hand.shape("second_hand") 657db96d56Sopenharmony_ci second_hand.color("gray20", "gray80") 667db96d56Sopenharmony_ci minute_hand = Turtle() 677db96d56Sopenharmony_ci minute_hand.shape("minute_hand") 687db96d56Sopenharmony_ci minute_hand.color("blue1", "red1") 697db96d56Sopenharmony_ci hour_hand = Turtle() 707db96d56Sopenharmony_ci hour_hand.shape("hour_hand") 717db96d56Sopenharmony_ci hour_hand.color("blue3", "red3") 727db96d56Sopenharmony_ci for hand in second_hand, minute_hand, hour_hand: 737db96d56Sopenharmony_ci hand.resizemode("user") 747db96d56Sopenharmony_ci hand.shapesize(1, 1, 3) 757db96d56Sopenharmony_ci hand.speed(0) 767db96d56Sopenharmony_ci ht() 777db96d56Sopenharmony_ci writer = Turtle() 787db96d56Sopenharmony_ci #writer.mode("logo") 797db96d56Sopenharmony_ci writer.ht() 807db96d56Sopenharmony_ci writer.pu() 817db96d56Sopenharmony_ci writer.bk(85) 827db96d56Sopenharmony_ci 837db96d56Sopenharmony_cidef wochentag(t): 847db96d56Sopenharmony_ci wochentag = ["Monday", "Tuesday", "Wednesday", 857db96d56Sopenharmony_ci "Thursday", "Friday", "Saturday", "Sunday"] 867db96d56Sopenharmony_ci return wochentag[t.weekday()] 877db96d56Sopenharmony_ci 887db96d56Sopenharmony_cidef datum(z): 897db96d56Sopenharmony_ci monat = ["Jan.", "Feb.", "Mar.", "Apr.", "May", "June", 907db96d56Sopenharmony_ci "July", "Aug.", "Sep.", "Oct.", "Nov.", "Dec."] 917db96d56Sopenharmony_ci j = z.year 927db96d56Sopenharmony_ci m = monat[z.month - 1] 937db96d56Sopenharmony_ci t = z.day 947db96d56Sopenharmony_ci return "%s %d %d" % (m, t, j) 957db96d56Sopenharmony_ci 967db96d56Sopenharmony_cidef tick(): 977db96d56Sopenharmony_ci t = datetime.today() 987db96d56Sopenharmony_ci sekunde = t.second + t.microsecond*0.000001 997db96d56Sopenharmony_ci minute = t.minute + sekunde/60.0 1007db96d56Sopenharmony_ci stunde = t.hour + minute/60.0 1017db96d56Sopenharmony_ci try: 1027db96d56Sopenharmony_ci tracer(False) # Terminator can occur here 1037db96d56Sopenharmony_ci writer.clear() 1047db96d56Sopenharmony_ci writer.home() 1057db96d56Sopenharmony_ci writer.forward(65) 1067db96d56Sopenharmony_ci writer.write(wochentag(t), 1077db96d56Sopenharmony_ci align="center", font=("Courier", 14, "bold")) 1087db96d56Sopenharmony_ci writer.back(150) 1097db96d56Sopenharmony_ci writer.write(datum(t), 1107db96d56Sopenharmony_ci align="center", font=("Courier", 14, "bold")) 1117db96d56Sopenharmony_ci writer.forward(85) 1127db96d56Sopenharmony_ci second_hand.setheading(6*sekunde) # or here 1137db96d56Sopenharmony_ci minute_hand.setheading(6*minute) 1147db96d56Sopenharmony_ci hour_hand.setheading(30*stunde) 1157db96d56Sopenharmony_ci tracer(True) 1167db96d56Sopenharmony_ci ontimer(tick, 100) 1177db96d56Sopenharmony_ci except Terminator: 1187db96d56Sopenharmony_ci pass # turtledemo user pressed STOP 1197db96d56Sopenharmony_ci 1207db96d56Sopenharmony_cidef main(): 1217db96d56Sopenharmony_ci tracer(False) 1227db96d56Sopenharmony_ci setup() 1237db96d56Sopenharmony_ci tracer(True) 1247db96d56Sopenharmony_ci tick() 1257db96d56Sopenharmony_ci return "EVENTLOOP" 1267db96d56Sopenharmony_ci 1277db96d56Sopenharmony_ciif __name__ == "__main__": 1287db96d56Sopenharmony_ci mode("logo") 1297db96d56Sopenharmony_ci msg = main() 1307db96d56Sopenharmony_ci print(msg) 1317db96d56Sopenharmony_ci mainloop() 132