Pythonのタートル・グラフィックス(6):木を描く

MYTurtleクラスを使って木を描くことにする。プログラムは以下のようになる:


import myturtle



angle = 60
ratio = 0.5
def ki( mikiT, length):
    if( length > 1):
        miki=mikiT.clone()
        miki.reverse()
        miki.fd(length)
        ki(miki, ratio*length)
        miki.rt(angle)
        ki(miki, ratio*length)
     

if __name__ == '__main__':
    
        
    miki = myturtle.MyTurtle()
    miki.clear()
    miki.ht()
    miki.lt(90)
    miki.setposition(0,-200)
    ki( miki, 200)

ここでは関数kiの引数に入るturtleオブジェクトがこのki関数で変化しないようにturtleオブジェクトのクローンを作って描画させている。

このクローンを使わない方法をとるにはki関数内でダミーな動きをさせて結果的にturtleオブジェクトの状態変化がなかったようにする:


import myturtle



angle = 60
ratio = 0.5
def ki( miki, length):
    if( length > 1):
        miki.reverse()
        miki.fd(length)
        ki(miki, ratio*length)
        miki.rt(angle)
        ki(miki, ratio*length)
        miki.lt(angle) #ダミー
        miki.bk(length) #ダミー
        miki.reverse() #ダミー
    

if __name__ == '__main__':
    
        
    miki = myturtle.MyTurtle()
    miki.clear()
    miki.ht()
    miki.lt(90)
    miki.setposition(0,-200)
    ki( miki, 200)

【描画の結果】

クローンkiなしのki

コメントを残す

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