Конкретные проблемы с вашим кодом:
turtle.mode('logo')
Я понимаю желание работать с севером == 0, но в случае такого дизайна это не в ваших интересах, и я бы остался по умолчаниюориентации.Это не будет работать:
turtle.up
Это должно быть turtle.up()
.Я не вижу, как вы получили ваш пример вывода с этим в коде, поскольку он должен выдать ошибку.Это нормально:
turtle.seth(270)
, если вы принимаете вертикальную ориентацию.Но в целом, если мы хотим рисовать под любым углом, вы не можете использовать setheading()
, поскольку он такой же абсолютный, как turtle.goto()
или turtle.home()
.Но это, кажется странным:
turtle.seth(360)
против.просто turtle.setheading(0)
.Ключевой концепцией при выполнении рисунка, подобного этому, является возвращение черепахи туда, где она началась, либо неявно в команде рисования, либо явно, отменив все, что вы сделали для позиционирования черепахи.Ниже моя полная переделка вашего кода:
from turtle import Screen, Turtle
def recCircle(depth, radius):
if depth == 0:
return
print("Drawing to the depth of: ", depth)
turtle.pendown()
turtle.circle(radius)
turtle.penup()
if depth > 1:
length = 11 * radius / 8 # no specific ratio provided, so eyeballed
turtle.left(45)
turtle.forward(length)
turtle.right(45)
recCircle(depth - 1, radius / 2) # Draw the leftmost circle
turtle.backward((2 * length ** 2) ** 0.5)
recCircle(depth - 1, radius / 2) # Draw the rightmost circle
turtle.right(45)
turtle.forward(length)
turtle.left(45)
screen = Screen()
screen.title("Circle")
turtle = Turtle('classic')
turtle.speed('fast')
depth = 3 # depth of recursion
radius = 100 # radius of circle
recCircle(depth, radius)
screen.exitonclick()