7段數碼管倒計時,因為受turtle畫筆速度限制,顯示效果可能不如直接打印數字
阿新 • • 發佈:2018-06-17
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 inrange(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畫筆速度限制,顯示效果可能不如直接打印數字