【问题标题】:Python-Turtle drawing recursive tree with 3 trunksPython-Turtle 绘制具有 3 个树干的递归树
【发布时间】:2021-03-27 09:26:50
【问题描述】:

我有一个问题,我必须制作一棵有 3 根树干的树,但我制作的唯一一棵树只有 2 根树干。这里是例子:

import turtle
import math
t = turtle.Turtle()
t.shape("turtle")
t.lt(90)

lv = 11
l = 100
s = 17

t.penup()
t.bk(l)
t.pendown()
t.fd(l)

def draw_tree(l, level):
l = 3.0/4.0*l
t.lt(s)
t.fd(l)
level +=1
if level<lv:
draw_tree(l, level)

t.bk(l)
t.rt(2*s)
t.fd(l)
if level<=lv:
draw_tree(l, level)
t.bk(l)
t.lt(s)
level -=1

t.speed(10)
draw_tree(l, 2)

有人可以帮忙吗?

【问题讨论】:

    标签: python recursion turtle-graphics python-turtle


    【解决方案1】:

    解决方案似乎与您已有的解决方案略有不同。不要只做左边然后右边,做左边,中间和右边。然后调整你的角度、长度和递归级别,直到你得到一个令人满意的结果:

    from turtle import Screen, Turtle
    
    LEVELS = 8  # recursion depth limit
    MAX_LIMB_LENGTH = 120  # pixels
    LIMB_ANGLE = 34  # degrees
    
    def draw_tree(length, level):
        if level > LEVELS:
            return
    
        turtle.left(LIMB_ANGLE)
        turtle.forward(length)
        draw_tree(3/4 * length, level + 1)
        turtle.backward(length)
    
        turtle.right(LIMB_ANGLE)
        turtle.forward(length)
        draw_tree(3/4 * length, level + 1)
        turtle.backward(length)
    
        turtle.right(LIMB_ANGLE)
        turtle.forward(length)
        draw_tree(3/4 * length, level + 1)
        turtle.backward(length)
    
        turtle.left(LIMB_ANGLE)
    
    screen = Screen()
    screen.tracer(False)
    
    turtle = Turtle()
    turtle.setheading(90)
    
    turtle.penup()
    turtle.backward(2 * MAX_LIMB_LENGTH)
    turtle.pendown()
    turtle.forward(MAX_LIMB_LENGTH)
    
    draw_tree(MAX_LIMB_LENGTH, 1)
    
    turtle.hideturtle()
    screen.tracer(True)
    screen.exitonclick()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-06
      • 1970-01-01
      • 2017-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-06
      相关资源
      最近更新 更多