SVX日記
2017-12-07(Thu) タートルグラフィックスを実装
先日に引き続き、ちょっとした用途のため、自製グラフィックライブラリにタートルグラフィックスの関数を追加することにした。習作として、フラクタル図形を描画するプログラムも書いてみる。やり始めたら極めてアッサリと、併せて数時間でできてしまった。
 def c_curve(win, n, l)
     unless(n == 0)
         win.tLeft(45)
         c_curve(win, n - 1, l)
         win.tRight(90)
         c_curve(win, n - 1, l)
         win.tLeft(45)
     else
         win.tForward(l)
     end
 end
 
 win.tHome
 win.tRight(90)
 c_curve(win, 12, 4) def r_dragon(win, n, l)
     unless(n == 0)
         win.tLeft(45)
         r_dragon(win, n - 1, l)
         win.tRight(90)
         l_dragon(win, n - 1, l)
         win.tLeft(45)
     else
         win.tForward(l)
     end
 end
 
 def l_dragon(win, n, l)
     unless(n == 0)
         win.tRight(45)
         r_dragon(win, n - 1, l)
         win.tLeft(90)
         l_dragon(win, n - 1, l)
         win.tRight(45)
     else
         win.tForward(l)
     end
 end
 
 win.tHome
 win.tRight(90)
 r_dragon(win, 12, 4) def tree(win, n, l)
     unless(n == 0)
         win.tSetPenWidth(n * 2)
         win.tForward(l)
         win.tRight(25)
         tree(win, n - 1, l / 1.5)
         win.tLeft(55)
         tree(win, n - 1, l / 1.3)
         win.tRight(30)
         win.tBack(l)
     else
         win.tForward(l)
         win.tBack(l)
     end
 end
 
 win.tHome
 tree(win, 7, 96)[ツッコミを入れる]