python海龜turtle分形樹(表白用)
阿新 • • 發佈:2019-01-02
import turtle import random def love(x,y):#在(x,y)處畫愛心lalala lv=turtle.Turtle() lv.hideturtle() lv.up() lv.goto(x,y)#定位到(x,y) def curvemove():#畫圓弧 for i in range(20): lv.right(10) lv.forward(2) lv.color('red','pink') lv.speed(10000000) lv.pensize(1) #開始畫愛心lalala lv.down() lv.begin_fill() lv.left(140) lv.forward(22) curvemove() lv.left(120) curvemove() lv.forward(22) lv.write("GPA",font=("Arial",12,"normal"),align="center")#寫上表白的人的名字 lv.left(140)#畫完復位 lv.end_fill() def tree(branchLen,t): if branchLen > 5:#剩餘樹枝太少要結束遞迴 if branchLen<20:#如果樹枝剩餘長度較短則變綠 t.color("green") t.pensize(random.uniform((branchLen + 5) / 4 - 2, (branchLen + 6) / 4 + 5)) t.down() t.forward(branchLen) love(t.xcor(),t.ycor())#傳輸現在turtle的座標 t.up() t.backward(branchLen) t.color("brown") return t.pensize(random.uniform((branchLen+5)/4-2,(branchLen+6)/4+5)) t.down() t.forward(branchLen) # 以下遞迴 ang=random.uniform(15,45) t.right(ang) tree(branchLen-random.uniform(12,16),t)#隨機決定減小長度 t.left(2*ang) tree(branchLen-random.uniform(12,16),t)#隨機決定減小長度 t.right(ang) t.up() t.backward(branchLen) myWin = turtle.Screen() t = turtle.Turtle() t.hideturtle() t.speed(1000) t.left(90) t.up() t.backward(200) t.down() t.color("brown") t.pensize(32) t.forward(60) tree(100,t) myWin.exitonclick()