2017-01-28 129 views
1

我知道这是一个非常愚蠢的问题,但我还没有找到任何答案。 我写了一个相当长的定义的函数。适用于多只海龟的功能

我得龟:p = turtle.Turtle()q = p.clone()

def scoregraph(): 
    start = pos() 
    color("silver") 
    pd() 
    rt(90) 
    fd(20) 
    lt(90) 
    fd(200) 
    rt(90) 
    fd(20) 
    rt(90) 
    fd(200) 
    rt(90) 
    fd(60) 
    rt(90) 
    fd(200) 
    lt(90) 
    fd(20) 
    lt(90) 
    fd(200) 
    rt(90) 
    fd(20) 
    color("black") 
    fd(6) 
    rt(90) 
    fd(200) 
    rt(90) 
    fd(6) 
    rt(90) 
    fd(200) 
    lt(90) 
    fd(60) 
    lt(90) 
    fd(200) 
    rt(90) 
    fd(60) 
    rt(90) 
    fd(200) 
    rt(90) 
    fd(60) 
    bk(66) 
    rt(90) 
    fd(200) 
    lt(90) 
    fd(126) 
    pu() 
    goto(start) 
    rt(90) 
    pd() 

我尝试使用了两只乌龟(p.scoregraphq.scoregraph)的功能,但它不能正常工作。

是否有可能,还是我必须定义两个独立的功能?

+1

请包括您的代码。见[问]。 –

+0

如果Python和java一样,只需将该方法添加到乌龟;只要做p.method()和q.method()。 – DeepS1X

回答

4

传递Turtle对象添加到您scoregraph()功能:

def scoregraph(t): 
    start = t.pos() 
    t.color("silver") 
    t.pd() 
    t.rt(90) 
    t.fd(20) 
    # etc 

然后调用这样的:

p = turtle.Turtle() 
q = p.clone() 
scoregraph(p) 
scoregraph(q) 

或者,如果你想更面向对象的风格,派生自己的类从Turtle并提供scoregraph()方法。使用self致电乌龟方法:

class MyTurtle(turtle.Turtle): 
    def scoregraph(self): 
     self.start = self.pos() 
     self.color("silver") 
     self.pd() 
     self.rt(90) 
     self.fd(20) 
     # etc 

p = MyTurtle() 
q = p.clone() 
p.scoregraph() 
q.scoregraph() 
+0

感谢您回答我的问题。在我阅读你的回复之前,我可能或可能没有想到它,或者至少是第一部分,但第二部分看起来很有用。谢谢! –