import turtle
def draw_pretty_christmas_tree(t, size, levels, shortening_factor, angle):
t.pencolor("green")
if levels == 0:
t.pencolor("red")
t.dot(size // 5)
t.pencolor("green")
return
if levels == 1:
t.forward(size)
t.backward(size)
return
length = size / shortening_factor
t.forward(length)
t.right(angle)
draw_pretty_christmas_tree(t, size * 0.8, levels-1, shortening_factor, angle)
t.left(angle * 2)
draw_pretty_christmas_tree(t, size * 0.8, levels-1, shortening_factor, angle)
t.right(angle)
t.backward(length)
def setup_turtle():
window = turtle.Screen()
window.bgcolor("white")
tree = turtle.Turtle()
tree.speed('fastest') # 设置最快的绘制速度
tree.left(90) # 朝上绘制
tree.penup()
tree.goto(0, -250) # 将起始点移到屏幕下方
tree.pendown()
return tree
def main():
my_turtle = setup_turtle()
draw_pretty_christmas_tree(my_turtle, 100, 6, 1.5, 25)
turtle.done()
if __name__ == "__main__":
main()
递归函数 draw_pretty_christmas_tree
来绘制圣诞树,
通过不断调用自身来创建分支,创建一个更自然的树木形状。
levels
参数决定树的高度(即递归深度);
shortening_factor
控制着树枝长度的减少程度。angle
是树枝与主干之间的角度。