Почему эта кривая Гильберта не рисует? - PullRequest
0 голосов
/ 20 мая 2019
import turtle as t
t.setup(500,500)
t.setworldcoordinates(0,0,500,500)
t.pu()
t.goto(0,0)
t.pd()
t.seth(0)
def N():
    t.pu()
    t.pd()
def B(c,d):
    t.right(90)
    c
    t.forward(5)
    t.left(90)
    d
    t.forward(5)
    d
    t.left(90)
    t.forward(5)
    c
    t.right(90)
def A(a,b):
    t.left(90)
    b
    t.forward(5)
    t.right(90)
    a
    t.forward(5)
    a
    t.right(90)
    t.forward(5)
    b
    t.left(90)      
t.seth(0)
A(A(None,None),B(None,None))

Я пытаюсь сделать кривую Гильберта, но она не работает.Я использую L-систему

1 Ответ

0 голосов
/ 21 мая 2019

Ваш код передает функции другим функциям, но не вызывает их правильно (вам нужны скобки и аргументы.) Моя лучшая догадка при исправлении этого кода следующая:

from turtle import Screen, Turtle

def A(a, b, n):

    if n == 0:
        return

    turtle.left(90)
    b(a, b, n - 1)
    turtle.forward(5)
    turtle.right(90)
    a(a, b, n - 1)
    turtle.forward(5)
    a(a, b, n - 1)
    turtle.right(90)
    turtle.forward(5)
    b(a, b, n - 1)
    turtle.left(90)

def B(c, d, n):

    if n == 0:
        return

    turtle.right(90)
    c(c, d, n - 1)
    turtle.forward(5)
    turtle.left(90)
    d(c, d, n - 1)
    turtle.forward(5)
    d(c, d, n - 1)
    turtle.left(90)
    turtle.forward(5)
    c(c, d, n - 1)
    turtle.right(90)

screen = Screen()
screen.setup(500, 500)
screen.setworldcoordinates(0, 0, 500, 500)

turtle = Turtle()

A(A, B, 7)

screen.exitonclick()

enter image description here

...