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

尼尔斯·沃克

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

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

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)

或者,您可以按照自己的方式做,并让您的自定义类只使用乌龟。

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章