Pythonのタートル・グラフィックス(5):MyTurtleクラスの導入

「Turbo Graphics」(安齋利洋・伊吹龍著;1987年)にはタートルの動きに対する面白い命令がある。それがreverseである。これはタートルの右回転(rt)と左回転(lt)の役割を反転させる機能を持っている。Pythonのタートル・グラフィックスにはこの機能がない。Python上でこの機能を関数として定義してもよいが折角なのでreverseをタートルクラスの一つメソッドとして追加したMyTurtleクラスを作ることにする。

MyTurtleクラスは元々のモジュール(turtle)で定義されているTurtleクラスを継承して作る。クラスの定義は以下のようなものである:


import turtle

class MyTurtle(turtle.Turtle):
    def __init__(self):
        turtle.Turtle.__init__(self)
        self.phase = 1

    def rt(self, angle):
        self.angle = angle*self.phase
        turtle.Turtle.rt(self, self.angle)

    def lt(self, angle):
        self.angle = angle*self.phase
        turtle.Turtle.lt(self, self.angle)

    def rev(self):
        return self.phase

    def reverse(self):
        self.phase=self.phase*-1

    def clone(self):
        temp=turtle.Turtle.clone(self)
        temp.phase = self.phase
        return temp

このクラスではreverseの導入によって影響を受けるturtleモジュールの中のメッソドの書き換えは最小限に止めてある。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です