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 是树枝与主干之间的角度。 

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐