绘制过程:
画右子树
返回节点
画左子树
返回节点
树图结果:

from turtle import *
def draw_tree(length):
if length >= 5:
# draw trunk of length
forward(length)
# turn right 20 degree
right(20)
# draw right child tree, child tree with length (length-10)
draw_tree(length - 10)
# turn left 40 degree
left(40)
# draw left child tree
draw_tree(length-10)
# turn right 20 degree
right(20)
# return initial position
backward(length)
def main():
# set color
color('green')
# set turtle speed, 0 is the fastest 1->10 from slow to fast
speed(0)
# adjust initial position of the tree
left(90)
penup()
backward(150)
pendown()
# draw tree
draw_tree(80)
exitonclick()
if __name__ == '__main__':
main()
下面我们画一个具有随机枝条长度的树,每次执行的结果都不一定一样:

具体代码如下:
from turtle import *
from random import randint
def random_delta_branch(start=6, end=15):
return randint(start, end)
def draw_tree(trunk_length, smallest_branch):
delta_branch = random_delta_branch()
if trunk_length >= smallest_branch:
forward(trunk_length)
right(20)
draw_tree(trunk_length - delta_branch, smallest_branch)
left(40)
draw_tree(trunk_length - delta_branch, smallest_branch)
right(20)
backward(trunk_length)
def main():
# set color
color('green')
# set turtle speed, 0 is the fastest 1->10 from slow to fast
speed(0)
# adjust initial position of the tree
left(90)
penup()
backward(150)
pendown()
# draw tree
draw_tree(80, 5)
exitonclick()
if __name__ == '__main__':
main()
这篇博客介绍了如何利用Python的turtle模块绘制出具有随机枝条长度的树形图形,每次运行程序都会产生独一无二的树图效果。
1124

被折叠的 条评论
为什么被折叠?



