Pythonにはturtleというモジュールが標準でついてきます。このモジュールは「タートルグラフィックス」を手軽に利用できるモジュールで,ノコノコと進む「カーソル」 と呼ばれるペンを使って,線をひきながら図形を書くことができます。
タートルグラフィックスはプログラミングの教育用に考案されたものです。タートルグラフィックスを使うと,命令や関数,条件分岐やループのようなプログラムの動きを目で確認しながらプログラムを作れます。画面に「Hello python」と表示するより図形を書く方が数倍ファンシーだし,楽しいので学習意欲も維持できそうです。
turtleモジュールはWindowsからLinuxのGUI環境,Mac OS Xなどほぼすべての環境で利用できます。Tkに依存しています。Windowsで利用する場合,IDLEを使うとちゃんと動かないことがあるようです。Winな人は「Python(Command Line)」から使うと良いでしょう。
使い方は簡単です。モジュールをインポートするだけ。「前に進む(forward)」「右に曲がる(right)」のような関数を呼ぶと,線が引けます。
from turtle import *
clear() # タートルグラフィックス用のウインドウが現れます
forward(100)
right(30)
forward(100)
left(90)
forループを使って六角形を書きましょう。
clear()
for i in range(6):
forward(100)
right(60)
raw_input("Type to finish:")
右に曲がる角度を144度にして,繰り返しの回数を5回にすると星が書けます:-)。
関数定義をしてもうすこし複雑な図形を書いてみましょう。花びらのような図形を書きます。
clear()
def draw_piece():
for i in range(10):
forward(20)
left(4)
left(140)
for i in range(10):
forward(20)
left(4)
for i in range(16):
draw_piece()
raw_input("Type to finish:")
TIPS:「tracer(False)」とすると,アニメーションを抑制して描画が早くなります。
いわゆる「ドラゴン曲線」を描いてみます。ドラゴン曲線を描くためには関数の再起呼び出しをする必要があります。
tracer(False)
raw_input("Type to finish:")
def dragon_right(n):
if n > 0:
dragon_left(n-1)
forward(5)
right(90)
dragon_right(n-1)
def dragon_left(n):
if n > 0:
dragon_left(n-1)
forward(5)
left(90)
dragon_right(n-1)
reset()
dragon_right(12)
多くの実用的なモジュールだけでなく,こういう「ほっこり系」のモジュールがひっそりインストールされるところがPythonのおもしろさかもしれません:-)。