示例代码:
import turtle
import random
# 在(x, y)处画爱心lalala
def love(x, y):
lv = turtle.Turtle()
lv.hideturtle()
lv.up()
# 定位到(x, y)
lv.goto(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("李杰", 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)
# 传输现在turtle的坐标
love(t.xcor(), t.ycor())
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()
运行效果: