适用于多只乌龟的功能

时间:2017-01-28 04:17:05

标签: python clone turtle-graphics

我知道这是一个非常愚蠢的问题,但我没有找到任何答案。 我写了一个定义相当长的函数。

我需要海龟:int hiWord = unchecked((short)((long)m.LParam >> 16)); if (hiWord != 0) { // do something } 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.scoregraph),但它不起作用。

是否可以,或者我是否必须定义两个单独的功能?

1 个答案:

答案 0 :(得分: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()