Python グラフィックツールのturtle

Python学習【365日チャレンジ!】305日目のマスターU(@Udemy11)です。

ここのところ、ホームベーカリーでパンを焼くのがマイブームなのですが、ちょっと前にGLOBALのパン切包丁を購入して、その切れ味に感動していました。

昨日、ちょっとした拍子にパン切包丁を落としてしまい、波刃の一部がほんの少し曲がってしまったんです。

それで、どうしようかと考えたところ、彫刻刀を研ぐ砥石があったので、慎重に研いでみたのですが、まだパンを切れていないので、果たして切れ味は大丈夫なのか、かなり心配しています。

メーカーへ研ぎ直しをお願いしようかと思いつつ、自分でなんとかしようと思っているのですが、こんなこともプログラムと一緒でいろいろと自分で試すことも大切ですね。

とはいえ、取り返しがつかないところまでいってしまうと、プロに任せるしかないんですけどね。

それでは今日も、Python学習を始めましょう。

昨日の復習

昨日は、クロージャーと同じ処理ができるfunctools.partialをを学習しました。

クロージャーは、outer関数の中にinnerを入れて、innerオブジェクトの状態を渡して後で引数をとって、実行できますが、functools.partialを使えば、アウター関数の部分を省略することができました。

詳しくは、は昨日の記事をごらんください。

今日から新しいセクションのグラフィックスに入り、まずは子供向けグラフィックツールのturtleを学習します。

turtle

turtleはその名のとおり、亀なのですが、イメージとしては、亀が動き回って図を書いていくという感じの子供向けグラフィックライブラリです。

子供向けとはいっても、Pythonのコードを子供が書けるのかどうか疑問が残りますが、コードを書くことでグラフィックの描写ができるので、プログラミング初心者の大人も楽しむことができます。

それではグラフィックツールのturtleの基本的なメソッドをチェックしていきます。

forward()

今回はターミナルでPythonを立ち上げてコードを書いていきますので、まずはimport turtleturtleをインポートします。

直線を右に向けて描写するのがforward()で、引数に数字を入れて実行すれば、線を書くことができます。

>>> import turtle
>>> turtle.forward(200)

グラフィックウインドウが立ち上がって、右に向けて直線が描かれます。

backward()

直線を左方向に描写するのがbackward()で、引数に数字を入れて実行すれば、線を書くことができます。

>>> turtle.backward(100)

先程のコードでグラフィックウインドウが立ち上がっているので、左に向けて直線が描かれていますが、見た目はカーソルが左に半分だけ戻ります。

shape()

ポインターの形を替えるのがshape()で、引数に'turtle'と入れて実行すれば、ポインターの形が亀に変わります。

>>> turtle.shape('turtle')

引数はturtleの他に、arrowcirclesquaretriangleclassicがあるので、試してみてください。

left()、right()

ポインターの進む角度を変更するのがleft()rightで、左に90度変更する場合はleft(90)、右に180度変更する場合はright(180)と入れて実行すれば、ポインターの向きが変わります。

>>> turtle.left(90)
>>> turtle.right(180)

color()、pencolor()

描写する線の色を変えたいときは、color()、もしくはpencolor()で描写する色を替えることができます。

>>> turtle.color('red')
>>> turtle.pencolor('green')

引数にredgreenblueと記述すれば、線の色を変えることができます。

home()

home()は、最初のスタート地点に戻る命令文です。

とんでもないところまで移動していたりしても、このコードを使えば、最初の位置に戻ることもできます。

>>> turtle.home()

まとめて実行

ここまで一つ一つ実行してきたコードをテキストエディタに書いて、すべてコピーしてターミナルにペーストすると一気にグラフィックが描写されます。

>>> import turtle
>>> turtle.forward(200)
>>> turtle.backward(100)
>>> turtle.shape('turtle')
>>> turtle.left(90)
>>> turtle.color('red')
>>> turtle.circle(150)
>>> turtle.pencolor('green')
>>> turtle.right(180)
>>> turtle.circle(100)
>>> turtle.home() 

出力結果

動きのある描写になるので、動画にしたほうがわかりやすいと思って、動画にしてみました。

まとめ

今回はターミナルで一つ一つの命令文を対話型シェルで実行していくしかありませんが、いろいろと触っていると、期待した動きじゃなかったり、描写が大きすぎて画面からはみ出してしまったりします。

コードは何度でも書き直すことができるので、実践しながらマスターしていけばいいでしょう。

ということで、明日もGood Python!