Turtleグラフィックス① Turtleグラフィックスの基本
Turtleグラフィックス
Turtleグラフィックスは, タートル(Turtle)と呼ばれるカーソルを動かしてベクトル・グラフィックを描画するためのライブラリ(モジュール)です. 1967年にSeymour Papert氏らが, Logoと呼ばれる教育用プログラミング言語の機能の一つとして導入しました. Turtleグラフィックスは,Pythonの標準ライブラリとしても導入されており,Pythonの初学者向けのツールとして利用されます. 標準的なTurtleグラフィックスは2次元の直交座標系(XY平面)に描画しますが, 3次元に拡張されたCheloniidae Turtle Graphicsなども存在します. 本授業ではTurtleグラフィックスを利用して,Pythonの制御構文や関数など学習していきましょう.
準備
Muエディタを起動したら,Python3 モードを選択しましょう. ツールバーにある「保存」をクリックして,「chapter2.py」という名前でスクリプトを保存します.
MuエディタでTurtleグラフィックスを利用するには, 次のように記述してライブラリ(モジュール)を インポート(import) します. インポートとは「プログラムの中で利用可能な状態にする」ことを意味しています.
# Turtleグラフィックスのライブラリをインポート
from turtle import *
Turtleグラフィックスの使い方
ここでは,Turtleグラフィックスの基本的な使い方を学習しましょう.
タートルの位置と向き
タートルの初期状態を確認します.
position()
はタートルの位置を表す関数,
heading()
はタートルの向き(角度)を表す関数です.
これらの値をprint()
でコンソールに出力します.
実行すると,タートルの座標は原点の(0.00,0.00)
,向きは0
度(右方向)であることがわかります(上方向は90
度,左方向は180
度,下方向は270
度).
print(position()) # タートルの座標 -> (0.00,0.00)
print(heading()) # タートルの向き -> 0.0
コンソールへの出力だけでなく,タートルの描画結果を表すスクリーン(ウィンドウ)が表示されます. タートルは矢印で表され,スクリーンの中央(原点)に,右を向いた矢印が描画されていることがわかります.
タートルの前進
タートルを進行方向に前進させるにはforward()
を用います.
()
の中に記述する数値が,進む距離(単位はピクセル)を表します.
ここでは,進行方向(右)に200だけ前進させてみましょう.
タートルの座標は(200.00,0.00)
になり,矢印が右方向に動くことが確認できます.
forward(200) # 200だけ前進
print(position()) # タートルの座標 -> (200.00,0.00)
print(heading()) # タートルの向き -> 0.0
タートルの回転
タートルを右向きに回転させるにはright()
,左向きに回転させるにはleft()
を用います.
()
の中に記述する数値は,回転する角度を表します.
ここでは,右方向に90度だけ回転し,さらに200だけ前進させてみましょう.
タートルの座標は(200.00,-200.00)
になり,向きは270
になっていることが確認できます.
right(90) # 90度だけ右回転
forward(200) # 200だけ前進
print(position()) # タートルの座標 -> (200.00,-200.00)
print(heading()) # タートルの向き -> 270.0
タートルの移動
座標を指定してタートルを移動させるにはgoto()
を利用します.
()
の中には移動先の座標を表すx
とy
の数値を記述します.
このとき,penup()
をすると直線を描くことなく,指定された座標に移動します.
元のように移動に合わせて直線を描くには,pendown()
を実行します.
ペンの状態に合わせて,描画の有無が切り替わることが確認できます.
penup() # 直線を描画しない
goto(-200, -200) # タートルを(-200,-200)に移動
pendown() # 直線を描画する
goto(-200, 200) # タートルを(-200,200)に移動
print(position()) # タートルの座標 -> (-200.00,200.00)
print(heading()) # タートルの向き -> 270.0
例題1
次の図を参考に正方形を描いてください.
ペンの色と太さ
ペンの色や太さを変更してみましょう.
ペンの色
ペンの色を変更するにはcolor()
を用います.
()
の中には色を表すred
やgreen
などの文字列を指定します.
指定可能な色はrgb.txtに列挙されています.
16進数の表現を用いて#ff0000
や#00ff00
などと指定することも可能です.
ここでは,ペンの色を赤(red
),緑(green
),青(blue
),ピンク(pink
)に変えながら直線を描画します.
penup()
goto(-200, 0)
pendown()
color("red")
forward(100)
color("green")
forward(100)
color("blue")
forward(100)
color("pink")
forward(100)
colormode()
で色モードを指定して,RGB(赤,緑,青)の3色の組み合わせで,色を表現することも可能です.
色モードを「1.0」に設定すると0.0〜1.0の範囲,また,色モードを「255」に設定すると0〜255の範囲で色の強さを表現します.
RGBの値は原色大辞典を参考にすると良いです.
penup()
goto(-200, 0)
pendown()
colormode(255) # 0〜255の範囲で指定
color(255, 0, 0) # 赤
forward(100)
color(0, 255, 0) # 緑
forward(100)
color(0, 0, 255) # 青
forward(100)
color(234, 145, 152) # ピンク
forward(100)
ペンの太さ
ペンの太さを変更するにはpensize()
を用います.
()
の中にはペンの太さ(単位はピクセル)を指定します.
ここでは,ペンの太さを5
,10
,15
,20
に変化させながら,直線を描画しています.
penup()
goto(-200, 0)
pendown()
pensize(5)
forward(100)
pensize(10)
forward(100)
pensize(15)
forward(100)
pensize(20)
forward(100)
例題2
次の図を参考に正三角形を描いてください.
その他の関数
アニメーションの速度
タートルのアニメーションの速度を変更するにはspeed()
を用います.
()
の中には0〜10の範囲で速度を指定します.
10
が最も速く,1
が最もゆっくり描画します.
また,タートルのアニメーションが不要であれば0
を指定すると良いです.
speed(10) # 高速
speed(1) # 低速
speed(0) # アニメーションなし
スクリーンの背景色
スクリーン(ウィンドウ)の背景色を指定するにはbgcolor()
を用います.
()
の中には,ペンの色を設定するcolor()
と同様に,文字列や16進数で色を指定します.
bgcolor("yellow") # 背景色を黄色に設定
タートル(矢印)の表示・非表示
タートル(矢印)を表示するにはshowturtle()
,非表示にするにはhideturtle()
を用います.
描画された結果だけを表示したいときは,hideturtle()
でタートルを隠しておきましょう.
showturtle() # タートルの表示
hideturtle() # タートルの非表示
課題
次の課題に取り組んでください.
- 正五角形を描く
- 図を参考に辺の色を赤,青,緑に設定する
- 背景色を黄に設定する
課題を完成させたらスクリプトを保存し,「chapter2.py」を提出してください.