タートルグラフィックスとは
教育用プログラミング言語の「LOGO」を元に画面上の亀をプログラミングで操作して図として描画するといったものです。
1960 年代に開発され、プログラムの結果を視覚ですぐに確認できることから、子供向けのプログラミング学習に用いられることもあります。
環境
- PyCharm
- Python3
タートルグラフィックスに触れる(対話型シェル)
まずは対話型シェルを用いて簡単にタートルグラフィックスに触れてみようと思います。
PyCharm のターミナル画面を開いて、Python
と入力します。
$ Python
これで対話型シェルになったので、turtle
を import します。
>>> import turtle
つぎにturtle.forward(100)
と入力します。
>>> turtle.forward(100)
すると以下のようにグラフィックが立ち上がります。
これは矢印が前に 100 回進んだということを表しています。
矢印の向きを下に向けたい場合にはturtle.right(90)
として 右に 90 度曲げます。
>>> turtle.right(90)
この状態で再度turtle.forward(100)
入力すると下に進みます。
>>> turtle.forward(100)
先頭の矢印の形が味気ないと感じる場合にはshape.()
で変更できます。
今回は亀に変更させてみたいと思います。
>>> turtle.shape('turtle')
color()
でこの亀の色を変更させることも可能です。
>>> turtle.color('red')
この亀を隠したい場合にはhideturtle()
を使用します。
>>> turtle.hideturtle()
隠した亀を再び表示させたい場合にはshowturtle()
と入力します。
>>> turtle.showturtle()
直線以外にも円を描くこともできます。
>>> turtle.circle(100)
今、赤い線で描かれていますがこの線の色を変更させたい場合には
pencolor()
を使用します。
同時に角度を少し変更させて進ませてみます。
>>> turtle.pencolor('blue')
>>> turtle.right(45)
>>> turtle.forward(100)
後ろに進むことも可能であり、backward()
を使用します。
>>> turtle.backward(200)
一番最初の位置に戻りたい場合にはhome()
を使用します。
>>> turtle.home()
すべてクリアにしたい場合にはclear()
を使用します。
>>> turtle.clear()
終了させるときには最後にdone()
と入力します。
>>> turtle.done()
ファイルを作成して実行させる
上記ではターミナルから対話型シェルで実行させたが、ここからは
適当な名前の Python ファイルを作成してファイルから実行させてみます。
ファイル上に以下の前進させるだけの簡単な処理を記述して実行させてみます。
import turtle
turtle.forward(100)
すると一瞬だけ表示されてすぐに消えてしまうことが確認できると思います。
ずっと表示するには最後の行にすべての処理が完了しましたと表す、done()
を
記述してあげます。
import turtle
turtle.forward(100)
turtle.done()
これでしっかりと表示されることが確認できると思います。
四角形
Python の for ループ使用して四角形を出力させてみます。
考え方としてはturtle.forward(100)
の前進を 4 回繰り返し、
一度前進が完了したら 90 度に曲がる処理を加えるといったものである。
import turtle
turtle.color('red', 'yellow')
turtle.begin_fill()
for _ in range(4):
turtle.forward(100)
turtle.right(90)
turtle.end_fill()
turtle.done()
ファイル形式では処理の内容をturtle.begin_fill()
とturtle.end_fill()
で
括ってあげます。
実行してあげると線が赤で中が黄色の四角形が表示されます。
星形
星形のプログラムですが、四角形のプログラムと構成がほとんど一緒になります。
変更箇所としては前進する回数が 5 回になるのと角度が360 / 5 * 2
になります。
import turtle
turtle.color('red', 'yellow')
turtle.begin_fill()
for _ in range(5):
turtle.forward(100)
turtle.right(360 / 5 * 2)
turtle.end_fill()
turtle.done()
星を三回作成させ、一度進むたびに前進する距離を少しずつ増やしてみる。
import turtle
turtle.color('red', 'yellow')
turtle.begin_fill()
for i in range(5 * 3):
turtle.forward(100 + i * 10)
turtle.right(360 / 5 * 2)
turtle.end_fill()
turtle.done()
すると以下のように綺麗な図形ができる。
このようにループの処理を色々としてあげると違った形になり楽しむことができる。
三角形
三角形も同様に三回前進して、一度前進したあとに角度を変えるといった処理になります。
import turtle
turtle.color('red', 'yellow')
turtle.begin_fill()
for i in range(3):
turtle.forward(100)
turtle.left(360 / 3)
turtle.end_fill()
turtle.done()
実行してみると三角形が表示されます。
星形でも行ったように一度前進したあとの角度を少しずらしてあげるとどうなるか見てみます。
import turtle
turtle.begin_fill()
for i in range(200):
turtle.forward(200)
turtle.left(360 / 3 + 10)
turtle.end_fill()
turtle.done()
このように星型の時と同様に綺麗な図形になります。
おわり
ざっくりでしたが以上が扱い方の説明になります。
このタートルグラフィックスを使用することで自分のプログラミングが
簡単に可視化できるため子供はもちろん大人も楽しんでプログラミングを学習することができると思います。
最後に以下のような木を作成することも可能です。
import turtle as t
foo = t.Turtle()
foo.left(90)
foo.speed(10)
def draw(l):
if(l<10):
return
else:
foo.forward(l)
foo.left(30)
draw(3*l/4)
foo.right(60)
draw(3*l/4)
foo.left(30)
foo.backward(l)
draw(100)