Pythonタートルでお絵描き

こどもプログラマーのためのコード解説

9〜12歳向け • ただ動かすだけでなくコードを読んでみよう • 約20分


Pythonには turtle(タートル) という楽しいモジュールがあります。ペンを持った小さなカメ(タートル)を動かすと、ペンの跡が画面に絵となって残ります。このページでは、タートルを使って六角形と四角形を描く本物のPythonプログラムを、一行ずつ解説していきます。

1. このプログラムは何を描くの?

プログラムを実行すると、画面の真ん中からカメが歩き出して、いろいろな形を描きます。完成するとこんな絵になります:

Pythonタートルプログラムが描いた六角形と四角形の絵です。
3組の六角形(各3つ)と、最後に2つの四角形を描きます。

よく見ると、大きな六角形が3つ重なって(同じ場所に描かれるので濃く見える)、そこから中くらい・小さな六角形が枝のように伸びていて、最後に四角形が2つ。すべての線は、カメが「前に進む」と「向きを変える」の2つだけで描かれています。

2. 大切な考え方:「進む」と「曲がる」

タートルが知っている動きはたった2つだけ:

これだけです!絵にあるすべての形は、進む — 曲がる — 進む — 曲がる — 進む … をくり返しているだけなんです。

閉じた図形を描くには、こんなルールが使えます:

スタートに戻ってくるには、合計で360°回らないといけません。だから、辺がN本ある図形では、各かどで 360 ÷ N 度ずつ曲がればOK。

3. コードを一行ずつ読んでみよう

タートルの準備

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歩の六角形を描いて」という意味になります。

レシピの中身:

  1. pendown() ― ペンを下ろす(線が描けるようになる)。
  2. for ループで6回くり返す(六角形の辺の数):
  3. penup() ― ペンを上げる(次の場所まで線を引かずに移動できる)。

四角形を描く関数

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回ごとに、カメは:

  1. 大きな六角形(1辺250)を描き、
  2. 向きを変えてペンを上げて移動し、
  3. 小さな六角形(1辺100)を描き、
  4. もう一度移動して、
  5. 中くらいの六角形(1辺120)を描きます。

だから絵には 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() は「終わったよ ― 絵を見られるようにウィンドウを開けたままにしておいてね」とプログラムに伝える命令です。

4. やってみよう

実験1 ― 六角形を大きくしてみよう。 draw_hex(250)draw_hex(400) に変えてみましょう。絵はどう変わる?
実験2 ― 三角形を描こう。 draw_triangle という名前の関数を新しくつくってみよう。辺は何本?かどでは何度曲がればいいかな?(ヒント:360 ÷ 3)
実験3 ― 色をつけよう。 draw_hex を呼び出す前に t.color("blue") を入れてみよう。"red""green""purple" も試してみて。
実験4 ― 星を描こう。 「進む & 144° 曲がる」を5回くり返すループを書いてみよう。(そう、72°じゃなくて144°!それが五芒星のひみつ。)

5. 覚えておきたい言葉

モジュール
ほかのプログラムから使える、できあいのコードのまとまり。turtle はPythonに最初から入っているモジュールのひとつ。
関数
名前をつけた手順のかたまり。何度でも呼び出して使える。draw_hex は関数。
引数(ひきすう)
関数を呼ぶときに値を入れる「あな」。side_length は引数。
ループ
「これをN回くり返して」とコンピューターに伝える書き方。for _ in range(6): は6回くり返すという意味。
度(ど)
曲がる量を表す単位。1周は360度、四角形のかどは90度。
ペンを上げる/下ろす
カメが歩くときに線を引くかどうか。上げる=線なし、下ろす=線が描ける。

draw_shapes.py をダウンロード

使い方:ファイルを保存して、ターミナルで python3 draw_shapes.py と入力してください。(Python 3 がインストールされている必要があります。)

ヒント:ファイル名を turtle.py にしないでね。Pythonには同じ名前の組み込みモジュールがあって、自分のファイルを読み込もうとしてうまく動かなくなってしまうから。