#Turtleモジュール
ペンを持った亀を操って絵を描くことのできるタートルグラフィックスのPython版です。
子ども向けにはscratchなどが有名ですが、これも使いようによっては良い教材になりそうです。
そういう自分が、この描画がすごいと思って使ってみたのですが…
- こんな線画が描けます(森か林みたい)
ではサンプルコードです。forestっていう関数を作成しておきましょう。
turtlePicture.py
#
# turtle を import して線描画する
# 2020.06.15 ProOJI
#
import turtle
# kameSan オブジェクト生成
kameSan = turtle.Turtle()
# メソッドを作成しておく(再帰的用法)
def forest(n, length:int=1000)->None:
if n <= 0:
kameSan.forward(length)
return
''' 再帰 1 長さ = 1000 * 0.5 '''
forest(n-1, length * 0.5)
# 右に 85 度回転
# 緩やかから急に尖った方向へ
kameSan.right(85)
''' 再帰 2 長さ = 1000 ÷ 3 '''
forest(n-1, length / 3)
# 左に 170 度回転
# 急なターンで尖った針を描画
kameSan.left(170)
''' 再帰 3 長さ = 1000 ÷ 3 '''
forest(n-1, length / 3)
# 右に 85 度回転
# 再び緩やな方向へ着地するように
kameSan.right(85)
''' 再帰 4 長さ = 1000 ÷ 0.38 '''
forest(n-1, length * 0.38)
if __name__ == '__main__':
kameSan.penup()
kameSan.setpos(270, -20)
kameSan.pendown()
kameSan.left(180)
kameSan.speed(0)
forest(5)
kameSan.done()
こうすることで線の描画ができます。
また、少し手を加えて再帰箇所に色チェンジを設定すると・・・
- サンプルコード(色付き)
turtlePictureWithColor.py
#
# turtle を import して線描画します
# kameSan は移動するとき線描画をします
# 2020.06.15 ProOJI
#
import turtle
# kameSan オブジェクト生成
kameSan = turtle.Turtle()
# メソッドを作成しておく(再帰的用法)
def forest(n, length:int=1000)->None:
if n <= 0:
kameSan.forward(length)
return
''' 再帰 1 長さ = 1000 * 0.5 '''
kameSan.pencolor("red")
forest(n-1, length * 0.5)
# 右に 85 度回転
# 緩やかから急に尖った方向へ
kameSan.right(85)
''' 再帰 2 長さ = 1000 ÷ 3 '''
kameSan.pencolor("blue")
forest(n-1, length / 3)
# 左に 170 度回転
# 急なターンで尖った針を描画
kameSan.left(170)
''' 再帰 3 長さ = 1000 ÷ 3 '''
kameSan.pencolor("green")
forest(n-1, length / 3)
# 右に 85 度回転
# 再び緩やな方向へ着地するように
kameSan.right(85)
''' 再帰 4 長さ = 1000 ÷ 0.38 '''
forest(n-1, length * 0.38)
if __name__ == '__main__':
# penup ペンを上げているので描画なし
kameSan.penup()
# Position へ移動
kameSan.setpos(270, -20)
# pendown ペンを下ろすのでここから描画される
kameSan.pendown()
# 左へ 180度旋回する
kameSan.left(180)
kameSan.speed(0)
forest(5)
kameSan.done()
どのコードが線をどう描いているのかがよくわかりますね。