こどもプログラマーのためのコード解説
9〜12歳向け • ただ動かすだけでなくコードを読んでみよう • 約20分
Pythonには turtle(タートル) という楽しいモジュールがあります。ペンを持った小さなカメ(タートル)を動かすと、ペンの跡が画面に絵となって残ります。このページでは、タートルを使って六角形と四角形を描く本物のPythonプログラムを、一行ずつ解説していきます。
プログラムを実行すると、画面の真ん中からカメが歩き出して、いろいろな形を描きます。完成するとこんな絵になります:
よく見ると、大きな六角形が3つ重なって(同じ場所に描かれるので濃く見える)、そこから中くらい・小さな六角形が枝のように伸びていて、最後に四角形が2つ。すべての線は、カメが「前に進む」と「向きを変える」の2つだけで描かれています。
タートルが知っている動きはたった2つだけ:
これだけです!絵にあるすべての形は、進む — 曲がる — 進む — 曲がる — 進む … をくり返しているだけなんです。
閉じた図形を描くには、こんなルールが使えます:
スタートに戻ってくるには、合計で360°回らないといけません。だから、辺がN本ある図形では、各かどで 360 ÷ N 度ずつ曲がればOK。
import turtle t = turtle.Turtle()
import turtle は「turtleモジュールを使うよ」とPythonに伝える命令です。次の行ではカメを1匹つくって、t という短いあだ名をつけています。毎回 turtle.Turtle() と書かなくて済むようにするためです。
def draw_hex(side_length): t.pendown() for _ in range(6): t.forward(side_length) t.right(60) t.penup()
関数(function)は名前のついたレシピのようなものです。このレシピの名前は draw_hex。中身は六角形を描く手順です。side_length は 引数(パラメーター) ― 関数を使うときに値を入れる「あな」です。draw_hex(250) なら「1辺の長さが250歩の六角形を描いて」という意味になります。
レシピの中身:
def draw_square(side_length): t.pendown() for _ in range(4): t.forward(side_length) t.right(90) t.penup()
六角形と同じ仕組みですが、ループは 4回、曲がる角度は 90° です。2つの関数はとてもよく似ていますね ― ちがうのは、辺の数と曲がる角度だけです。
for _ in range(3): draw_hex(250) t.right(90) t.forward(60) draw_hex(100) t.right(90) t.forward(40) draw_hex(120)
このループは 3回 くり返します。1回ごとに、カメは:
だから絵には 3組×3つの六角形 が見えるんです。(大きな六角形は3回とも同じ場所に描かれます!)
t.forward(300) t.right(60) draw_square(270) t.left(30) t.forward(110) t.right(80) draw_square(135) turtle.done()
六角形を全部描き終わったあと、カメは別の場所に移動して、大きな四角形を描き、また移動して小さな四角形を描きます。最後の turtle.done() は「終わったよ ― 絵を見られるようにウィンドウを開けたままにしておいてね」とプログラムに伝える命令です。
使い方:ファイルを保存して、ターミナルで python3 draw_shapes.py と入力してください。(Python 3 がインストールされている必要があります。)
ヒント:ファイル名を turtle.py にしないでね。Pythonには同じ名前の組み込みモジュールがあって、自分のファイルを読み込もうとしてうまく動かなくなってしまうから。