Turtleを使ってpythonで絵を描く

Python独学ならTech-Joho TOP > いろいろやってみた > Turtleを使ってpythonで絵を描く

Turtleモジュール

Pythonで絵を描く、となればまずはTurtleモジュールです。

より高度なPygameやKivyを使った方法も別ページ紹介しています。

Kivyを使ってPythonで絵を描く

Pygameを使ってPythonで絵を描く

Turtleモジュールは、ペンを持った亀を操って絵を描くことのできるタートルグラフィックスのPython版です。

参考
タートルグラフィックス (公式ドキュメント)

https://docs.python.jp/3/library/turtle.html

このページでは、下の黒い欄で、実際にPythonコードを実行できます。
この後の説明の通り、自分でも絵を書いてみましょう。

まず、下のリンクをクリックして、お絵かきウインドウを別に開いて下さい。
お絵かきウインドウを開く

お絵かきウインドウは、このようになっています。
turtle window

左の方に黒い欄があります。
ここに、Pythonコードを書いていきます。
黒い欄の使い方はこちら

右に白いスペースが開いていますが、ここに絵が出力されます。

まず円を描いてみよう

さっそくですが、まず円を描いてみましょう。

下のコードを、お絵かきウインドウの黒い欄に1行ずつコピー&ペーストして、エンターを押していってください。

>>> import turtle
>>> t=turtle.Turtle()
>>> t.circle(100)
>>> turtle._Screen().end()

こんな風に、円が描かれたはずです。
Turtleモジュールではこのようにコードを入力することで絵を描くことができます。
turtle circle

上のコードを1行ずつ解説していきます。

>>> t=turtle.Turtle()

この行では、turtleモジュールを読み込んでいます。
turtleモジュールには、絵を描くための様々なクラスや関数が入っています。
これを利用できるように読み込んでいます。

>>> import turtle

この行では、 先程読み込んだturtleモジュールの中に入っているTurtleというクラスのインスタンスを作っています。
筆を持った亀を一匹呼び出すイメージです。
この亀は、変数tに代入しています。
変数tに入っている、亀(Turtleクラスのインスタンス)の様々なメソッドを実行することで、この後絵を書いていきます。

>>> t=turtle.Turtle()

この行では、変数tに入っている、亀(Turtleクラスのインスタンス)に、半径100の円をかけ、と命令しています。
円を書く命令なので、circleという名前のメソッドを実行しています。
また、cicrleメソッドの引数は半径です。半径100なので、カッコの中に100と書いてあります。

>>> t.circle(100)

この行では、今まで入力した命令を、実行しろ、という命令をだしています。
そのため、この行を実行すると、円が描かれます。
ただし、この行は、通常のPythonでは必要がありません。
このサイトのように、ブラウザ上で動かすPython(Brython)の場合だけ、必要な内容です。

>>> turtle._Screen().end()

Turtleモジュールのいろいろな使い方

まず、お絵かきウインドウをリロードして下さい。
今までの内容が全て消えます。

次に、下の内容を全てコピーして、お絵かきウインドウの黒い欄にペーストし、エンターを押してください。
このように、1行ずつでなく、一気に複数行を実行することができます。

import turtle
t=turtle.Turtle()
t.shape("turtle")
t.color("red")
t.forward(100)
t.penup()
t.left(90)
t.forward(100)
t.right(90)
t.pendown()
t.width(5)
t.color("blue")
t.forward(100)
turtle._Screen().end()

このように、線が2本表示されたと思います。

turtle some functions

一番最初の”t=turtle.Turtle()”と、一番最後の”turtle._Screen().end()” の部分は前と同じです。

それ以外のところはだいぶ違いますね。
ここでは、新しいテクニックを5つ(とおまけ1つ)使っています。

真っ直ぐ進む

タートルグラフィックスでは、亀のアイコンが常に筆を持って移動しているイメージです。
亀が移動すると、そのあとには線が引かれます。

forwardというメソッドを使うと、亀が真っ直ぐ進み、線を引きます。
引数の数値のぶんだけ進みます。
下では、100進んでいます。

t.forward(100)

向きを変える

right、leftというメソッドで、右左に向きを変えられます。
引数には、曲がる角度をしてします。
下の例では、90度右に曲がっています。

t.right(90)

線の色を変える

colorメソッドを使います。
引数に英語で色の名前を指定します。
下の例では赤色にしています。

t.color("red")

ペンを上げて移動する

今まで、亀が移動すると必ず線が引かれていましたが、penup関数を使うと、その後は線が引かれなくなります。
線を引かずに移動だけするのに便利です。
また、pendown関数を使うとまた、線が引かれるようになります。

t.penup()
t.pendown()

ペンの太さを変える

width関数を使うと、先の太さを変えられます。
引数は太さの数値です。

t.width(5)

おまけ:アイコン亀にする

線を引いているときの、アイコンが矢印ではなく亀になっていたのに気づきましたか?
turtle shape

これは、3行のshapeメソッドで変えています。

import turtle
t=turtle.Turtle()
t.shape("turtle") # 亀にしている

このようなテクニックを使えば、いろいろな絵がかけるはずです。

タートルグラフィックスで描いた例

下の絵は、PythonをPC内にインストールした時についてくる、タートルグラフィックスのサンプルです。
詳しくはこちらに説明があります
このような絵を、このページにあるテクニックで描くことができます。
みなさんも、ぜひ、好きな絵をかいていみてください。

example forest

実際に動く時計です。
moving clock

実物はくるくるとアニメーションします。round dance

Author: 管理

tech-joho.infoの管理人です。いろいろな技術について勉強しています。