1. 程式人生 > >7段數碼管倒計時,因為受turtle畫筆速度限制,顯示效果可能不如直接打印數字

7段數碼管倒計時,因為受turtle畫筆速度限制,顯示效果可能不如直接打印數字

clear () 代碼 形式 += 可能 pan 倒計時 spa

7段數碼管倒計時,因為受turtle畫筆速度限制,顯示效果可能不如直接打印數字,代碼如下:

import turtle as t
import time

def drawgap(ft):
    t.penup()
    t.fd(0.11*ft)

def drawline(e,ft):
    drawgap(ft)
    t.pendown() if e else t.penup()
    t.fd(0.78*ft)
    drawgap(ft)
    t.right(90)

def drawdigit(digit,ft):
    drawline(True,ft) if eval(digit) in
[2,3,4,5,6,8,9] else drawline(False,ft) drawline(True, ft) if eval(digit) in [0,1,3,4,5,6,7,8,9] else drawline(False, ft) drawline(True, ft) if eval(digit) in [0,2,3,5,6,8,9] else drawline(False, ft) drawline(True, ft) if eval(digit) in [0,2,6,8] else drawline(False, ft) t.left(90) drawline(True, ft)
if eval(digit) in [0,4,5,6,8,9] else drawline(False, ft) drawline(True, ft) if eval(digit) in [0,2,3,5,6,7,8,9] else drawline(False, ft) drawline(True, ft) if eval(digit) in [0,1,2,3,4,7,8,9] else drawline(False, ft) t.right(180) t.fd(-ft) def drawempty(ft): t.pendown() for j in
range(4): t.fd(ft) t.right(90) t.left(90) for k in range(3): t.fd(ft) t.right(90) t.right(180) t.fd(-ft) ft=100 t.pencolor(red) t.pensize(0.12*ft) t.setup(1000,450) countnum=3 numstr=([‘‘]*countnum) for i in range(countnum): numstr[i]=str(countnum-i) dur=([‘‘]*countnum) i=-1 t.speed(99*99) #校正數字顯示位置 t.penup() t.fd(-0.5*ft) #開始計時 for each in numstr: starte=time.perf_counter() drawdigit(each,ft) t.clear() i+=1 dur[i]=time.perf_counter()-starte time.sleep(1-dur[i]) #校正直接打印數字的位置 t.right(90) t.fd(ft) t.left(90) j=-1 for each in numstr: start=time.perf_counter() j+=1 t.write(countnum-j,font=(Arial,ft,normal)) time.sleep(0.7) t.clear() dur=time.perf_counter()-start time.sleep(1-dur) #打印計時結束的提示信息 t.penup() t.fd(-ft*2) t.pencolor(green) for i in range(5): t.clear() time.sleep(0.3) t.write(倒計時結束,font=(SimHei,int(ft*0.8),italic)) time.sleep(0.4) t.done()

結果為動畫形式.

7段數碼管倒計時,因為受turtle畫筆速度限制,顯示效果可能不如直接打印數字