Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python类计算长度_Python_Turtle Graphics - Fatal编程技术网

Python类计算长度

Python类计算长度,python,turtle-graphics,Python,Turtle Graphics,我是在模仿海龟模型来画画 这就是我到目前为止所做的: class Turtle: def __init__(self): self.x = drawer.maxX / 2 self.y = drawer.maxY / 2 self.angle = 0 self.pen_active = True self.pause = 0 self.body = drawer.circle(0, 0, 5,

我是在模仿海龟模型来画画

这就是我到目前为止所做的:

class Turtle:
    def __init__(self):
        self.x = drawer.maxX / 2
        self.y = drawer.maxY / 2
        self.angle = 0
        self.pen_active = True
        self.pause = 0
        self.body = drawer.circle(0, 0, 5, drawer.green, 3)
        self.head = drawer.circle(0, 0, 3, drawer.green, 3)
        self.length = 0
        self.update()

    def set_pause(self, n):
        self.pause = n

    def no_pause(self):
        self.set_pause(0)

    def hide(self):
        self.body.hide()
        self.head.hide()

    def show(self):
        self.body.show()
        self.head.show()

    def update(self):
        self.body.setPos(self.x, self.y)
        phi = radians(90 - self.angle)
        self.head.setPos(self.x + 5 * cos(phi), self.y + 5 * sin(phi))
        drawer.wait(self.pause)

    def pen_up(self):
        self.pen_active = False

    def pen_down(self):
        self.pen_active = True

    def fly(self, x, y, angle):
        self.x = x
        self.y = y
        self.angle = angle
        self.update()

    def forward(self, a):
        phi = radians(90 - self.angle)
        nx = self.x + a * cos(phi)
        ny = self.y + a * sin(phi)
        if self.pen_active:
            drawer.line(self.x, self.y, nx, ny)
        self.x = nx
        self.y = ny
        self.update()

    def backward(self, a):
        self.forward(-a)

    def turn(self, phi):
        self.angle += phi
        self.update()

    def left(self):
        self.turn(-90)

    def right(self):
        self.turn(90)

    def length(self):
        pass
现在我试图写一个方法来计算画的线的长度,但我不知道怎么做。这条线是在笔放下,乌龟向前或向后移动时画的。如果海龟飞行或转身,则不会绘制线。任何想法


感谢您的帮助。

如果我理解正确,您希望保留一份记录,记录您的
海龟自创建之日起所做的
向前
向后
移动的长度

这很简单,只需对变量名小心一点。当前,您将
length
用作实例变量(用于保存运行长度总和)和方法名称。前者将隐藏后者,因此您可能需要两个不同的名称

如果我们将实例变量重命名为
\u length
,则可以使其如下工作:

class Turtle:
    def __init__(self):
        # unmodified stuff omitted

        self._length = 0

    # unmodified methods skipped

    def forward(self, a):
        # all the current stuff

        self._length += abs(a) # absolute value to count backing up as movement

    def length():
        return self._length
您可以决定不需要简单的
length
方法,在这种情况下,您可以返回使用
self.length
作为实例变量名(并在需要值时访问属性)。

这有帮助吗?更具体地说,