Pythonの基礎・Turtleで図形を描いてみよう
Turtleグラフィックス
Turtleグラフィックスは, 1967年に教育向けに設計されたプログラミング言語 LOGOで実装された コンピュータ・グラフィックスの機能です. ユーザが記述したプログラムに応じて,亀(タートル) の形をしたカーソルを操作して, 自由にコンピュータ・グラフィックスを作成することが可能です. 近年,データ分析や人工知能(AI)などの分野で採用されるプログラミング言語Pythonにも, Turtleグラフィックスが標準ライブラリとして組み込まれており, Pythonの基礎を学ぶために利用されています. ここでは,将来,授業や研究でPythonを活用するための準備として, TurtleグラフィックスでPythonの基礎を学びましょう.
Google Colaboratory
Pythonの開発環境として,Google Colaboratory(略称: Colab)を利用します. 下記のリンクをクリックして,Colabにアクセスしましょう.
Colabにアクセスしたら,大学のGmailアカウント(@g.sugiyama-u.ac.jp)でログインしていることを確認してください. 次に,ノートブック(ファイル)を新規作成し,ノートブックの名前を chapter1.ipynb に変更しましょう.
Colabの使い方
Colabではコードセルと呼ばれる入力フィールドにPythonのコードを入力します.
コードセルを増やして,1+2
,2*3
,print("Hello Turtle!")
と入力してみましょう.
入力したらコードセルの左端にある「セルを実行」をクリックします.
実行するとコードセルの実行結果である3
,6
,Hello Turtle!
が出力されることが確認できます.
print
は文字を出力するためのPythonの命令文です.
このように,適宜,コードセルを増やしながら,Pythonのコードを追加で記述して行きます.
ColabTurtleのインストール
ColabでTurtleグラフィックスを利用するには, ColabTutrleというライブラリを利用します(Pythonの標準ライブラリとは異なるので注意). このライブラリは MITライセンス が付与されたオープンソース・ソフトウェア(OSS)です. インストールするには下記のコードを,コードセルに入力します.
!pip install ColabTurtle
from ColabTurtle.Turtle import *
図形の描画
Turtleグラフィックスを利用するための準備は整いました. 早速,様々な図形を描画して行きましょう.
正方形を描く
まずは,正方形を描いてみましょう.
図形を描くときは,最初にinitializeTurtle()
を実行し,カーソル(亀)の位置や向きを初期化します.
実行結果として,幅:$800$px,高さ:$500$pxのキャンバスが表示され,
キャンバスの中央に上を向いた亀が表示されます.
この亀を動かしながら図形を描画していきます.
initializeTurtle()
ペンを上げたままで,亀を座標$(100, 400)$に移動し,ペンを下ろして,亀の進行方向(ここでは上方向)に$300$だけ移動させます.
ペンを下ろした状態で亀を移動させると,その軌跡が線として描画されます.
このとき,ペンを上げるにはpenup
,亀を特定の座標に移動させるにはgoto
,
ペンを下ろすにはpendown
,亀を進行方向に移動させるにはforward
を指示します.
この結果,正方形の左側の辺が描画されます.
penup()
goto(100, 400)
pendown()
forward(300)
penup()
次に,ペンを下ろして,亀を右に$90$度だけ回転させ,亀の進行方向(ここでは右方向)に$300$だけ移動させます.
亀の向きを右方向に回転させるにはright
,左方向に回転させるにはleft
を指示します.
この結果,正方形の上側の辺が描画されます.
pendown()
right(90)
forward(300)
penup()
最後に,ペンを下ろして,亀の右向き$90$度の回転と,亀の進行方向への$300$の移動を,2回繰り返します. この結果,正方形の右側と下側の辺が描画され,正方形が完成します.
pendown()
right(90)
forward(300)
right(90)
forward(300)
penup()
正三角形を描く
次は正三角形を描いてみましょう. 正方形と異なるのは,亀の回転する角度と,亀の移動の繰り返しの回数です 正方形では,$90$度の回転をしていましたが,正三角形では,$120$度の回転が必要です(内角が$60$度のため). また,正三角形は3辺で構成されるため,3回の繰り返しで完成します. ただし,初期状態では亀は上方向を向いているため,最初の回転だけは$120+30$度回転させています.
initializeTurtle()
penup()
goto(300, 100)
pendown()
right(150)
forward(300)
right(120)
forward(300)
right(120)
forward(300)
penup()
星を描く
最後は星を描いてみましょう. 星では,$144$度の回転が必要です(内角が$36$度のため). ここでは,星の左端の点から書き始めるため,最初の回転だけは$90$度に設定しています. また,星は5辺で構成されるため,5回の繰り返しで完成します.
initializeTurtle()
penup()
goto(200, 200)
pendown()
right(90)
forward(300)
right(144)
forward(300)
right(144)
forward(300)
right(144)
forward(300)
right(144)
forward(300)
penup()
ペンの色とサイズ
ペンの色やサイズを変えて図形を描画することが可能です.
ペンの色を変える
ペンの色を変えてみましょう.
ペンの色を設定するにはcolor
を指示します.
指定できる色名はHTMLの標準色とされている140種類です.
このとき,色の3原色である赤,緑,青の成分の組わせで色を表現することも可能です(color(r,g,b)
で指定する).
ここでは,赤,青,緑,黄色,紫,ピンクの順に色を変えて,直線を描いています.
initializeTurtle()
penup()
goto(100, 250)
right(90)
pendown()
color("red")
forward(100)
color("blue")
forward(100)
color("green")
forward(100)
color("yellow")
forward(100)
color("purple")
forward(100)
color("pink")
forward(100)
penup()
ペンのサイズを変える
ペンのサイズを変えてみましょう.
ペンのサイズを指定するにはpensize
を指示します.
ここでは,4,8,12,16,20,24の順に太さを変えて,直線を描いています.
initializeTurtle()
penup()
goto(100, 250)
right(90)
pendown()
pensize(4)
forward(100)
pensize(8)
forward(100)
pensize(12)
forward(100)
pensize(16)
forward(100)
pensize(20)
forward(100)
pensize(24)
forward(100)
penup()
文字の描画
図形だけでなく文字を描画することも可能です.
文字を描画するにはwrite
を指示します.
write
には,描画する文字と,文字のフォントを指定します.
フォントは,文字の大きさ,フォントの種類,フォントのスタイルで構成されます.
ここでは,T,U,R,T,L,Eの順に,文字を描いています.
initializeTurtle()
penup()
goto(100, 250)
right(90)
write("T", font=(40, "Arial", "normal"))
forward(100)
write("U", font=(40, "Arial", "normal"))
forward(100)
write("R", font=(40, "Arial", "normal"))
forward(100)
write("T", font=(40, "Arial", "normal"))
forward(100)
write("L", font=(40, "Arial", "normal"))
forward(100)
write("E", font=(40, "Arial", "normal"))
forward(100)
課題
下図を参考に正五角形を描いてください.
亀のスタートの座標は(300, 100)
とする.
課題が完成したら,Google Colaboratoryで作成した chapter1.ipynb を保存し, 共有用のリンク と ノートブック(.ipynb) をダウンロードして提出してください. 提出の前に必ず下記の設定を行ってください.
- ノートブックの設定で「セルの出力を除外する」のチェックを外す
- ノートブックの変更内容を保存して固定
- 共有設定で「学校法人椙山女学園大学」を「閲覧者」に設定