Как я могу импортировать модуль черепахи в классе? - PullRequest
0 голосов
/ 23 декабря 2018

Я рисую фрактальные деревья в python, и это мой метод (он работает):

def fractal(length):
    if lenght < 1:
        return
    else:
        turtle.forward(length)
        turtle.left(30)
        fractal(length*0.67)
        turtle.right(60)
        fractal(length*0.67)
        turtle.left(30)
        turtle.backward(length)

Сейчас я пытаюсь реализовать это в классе, но я не знаю, как мне это сделатьс командами черепахи.

Я новичок в кодировании, поэтому, пожалуйста, не судите меня слишком сильно за мой код.

Я пробовал что-то вроде этого:

class fractalTree():

from turtle import *

def __init__(self, angle, factor):
    self.angle = angle
    self.factor = factor

def fractal(self, length):
    if length < 1:
        return
    else:
        self.turtle.forward(length)
        self.turtle.left(self.angle)
        fractal(length * self.factor)
        self.turtle.right(self.angle * 2)
        fractal(length * self.factor)
        self.turtle.left(self.angle)
        self.turtle.backward(length)

test = fractalTree(14, 2/3)
test.fractal(100)

1 Ответ

0 голосов
/ 23 декабря 2018

Есть несколько способов сделать это.Ваш пользовательский класс может содержать черепаху:

from turtle import Screen, Turtle

class fractalTree():

    def __init__(self, angle, factor):
        self.angle = angle
        self.factor = factor
        self.turtle = Turtle()

    def fractal(self, length):
        if length < 1:
            return

        self.turtle.forward(length)
        self.turtle.left(self.angle)
        self.fractal(length * self.factor)
        self.turtle.right(self.angle * 2)
        self.fractal(length * self.factor)
        self.turtle.left(self.angle)
        self.turtle.backward(length)

screen = Screen()

screen.mode('Logo')  # being lazy, make the tree upright

test = fractalTree(30, 2 / 3)

screen.tracer(False)
test.fractal(100)
screen.tracer(True)

screen.exitonclick()

Или ваш пользовательский класс может стать черепахой:

class fractalTree(Turtle):

    def __init__(self, angle, factor):
        super().__init__()
        self.angle = angle
        self.factor = factor

    def fractal(self, length):
        if length < 1:
            return

        self.forward(length)
        self.left(self.angle)
        self.fractal(length * self.factor)
        self.right(self.angle * 2)
        self.fractal(length * self.factor)
        self.left(self.angle)
        self.backward(length)

Или,вы можете делать то, что вы делаете, и использовать свой класс просто использовать черепаху.

enter image description here

...