如何在课程中导入Turtle模块?

时间:2018-12-23 13:32:29

标签: python class turtle-graphics

我正在用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)

现在,我正在尝试在一个类中实现此功能,但是我不知道该如何使用turtle命令执行此操作。

我是编码的新手,所以请不要为我的代码太难判断。

我尝试过这样的事情:

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 :(得分:1)

有几种方法可以解决此问题。您的自定义类可以包含一只乌龟:

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