Python 的 turtle 库非常适合用来做简单的图形绘制,尤其是对于初学者理解坐标系和绘图指令很有帮助。
下面这段代码利用递归算法生成一棵不断分叉的树,并在每个分支末端点缀一颗爱心。你可以直接复制运行,根据需求修改文字内容或颜色。
import turtle
import random
def love(x, y):
# 在指定坐标绘制爱心
lv = turtle.Turtle()
lv.hideturtle()
lv.up()
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)
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)
love(t.xcor(), t.ycor())
t.up()
t.backward(branchLen)
t.color()
t.pensize(random.uniform((branchLen + ) / - , (branchLen + ) / + ))
t.down()
t.forward(branchLen)
ang = random.uniform(, )
t.right(ang)
tree(branchLen - random.uniform(, ), t)
t.left( * ang)
tree(branchLen - random.uniform(, ), t)
t.right(ang)
t.up()
t.backward(branchLen)
myWin = turtle.Screen()
t = turtle.Turtle()
t.hideturtle()
t.speed()
t.left()
t.up()
t.backward()
t.down()
t.color()
t.pensize()
t.forward()
tree(, t)
myWin.exitonclick()


