Pythonでもタートルグラフィックス

プログラミング

亀

こんにちは。今日は亀の話です。コンピュータ関係で亀といえば、タートルグラフィックスです。Pythonをインストールしていれば、特別なライブラリを追加していなくても、なんと!タートルグラフィックスが描けます。ということで、今日はPythonでタートルグラフィックスです。Scratchとドリトルとも比較してみたいと思います。「Scratchでもタートル、ドリトルでもタートル、Pythonでもタートル」と昔どこかで似たようなフレーズを聞いたような気がしますが、たぶん気のせいです。

簡単なサンプル

簡単なサンプルとして三角形を描いてみましょう。

import turtle

kamepy = turtle.Turtle()

kamepy.shape('turtle')
kamepy.pencolor('green')

for i in range(3):
    kamepy.forward(200)
    kamepy.left(120)

1行目はライブラリインポートしています。

3行目はタートルのオブジェクトを作っています。

5行目は無くても動きますが、タートルの形を亀にしています。初期のパラメータは’turtle’の他に、’arrow’、’circle’、’square’、’triangle’、’classic’があります。

6行目も無くても動きますが、ペンの色を’green’にしています。ペンの色は次のサイトを参考にしてみてください。(標準で使えるかどうかわからないですが…)

8~10行目で三角形を描いています。

タートルオブジェクトを作る

タートルオブジェクトを作るには「turtle.Turtle()」です。ドリトルでは「タートル!作る。」です。

例) kamepy = turtle.Turtle()

今回の記事では、タートルオブジェクトを表す変数は「kamepy」としておきます。「かめピ」と呼んであげてください。

タートルの動きのメソッド

タートルの動きに関する主なメソッド(命令)を確認していきましょう。

タートルを前進(後退)させる

前進は「forward(●)」です。Scratchでは「●歩動かす」、ドリトルでは「● 歩く」と同じです。後退させるには「back(●)」です。●は移動させる距離です。

例) kamepy.forward(100)

タートルを回転させる

左回転は「left(●)」、右回転は「right(●)」です。Scratchでは「↶●度回す」「↷●度回す」、ドリトルでは「● 左回り」「● 右回り」です。●は角度で、いずれも直角が90°の度数法です。

例) kamepy.left(90)

タートルの位置を座標で指定する

点(x,y)にタートルを移動するには、「goto(x,y)」です。Scratchでは「x座標をx、y座標をyにする」、ドリトルでは「x y 位置」です。

例) kamepy.goto(200,200)

ペンに関するメソッド

次にペンに関するメソッドを見ていきましょう。

ペンの上げ下ろし

ペンを下ろすには「pendown()」、ペンを上げるには「penup()」です。Scratchでは「ペンを下ろす」「ペンを上げる」、ドリトルでは「ペンなし」「ペンあり」です。

例) kamepy.pendown()

ペンの色

ペンの色を変えるには「pencolor(●)」です。Scratchでは「ペンの色を●にする」、ドリトルでは「● 線の色」です。●は色です。

例) kamepy.pencolor('red’)

ペンの太さ

ペンの太さを変えるには「pensize(●)」です。Scratchでは「ペンの太さを●にする」、ドリトルでは「● 線の太さ」です。●はペンの太さです。

例) kamepy.pensize(1)

他にも命令はありますが、タートルグラフィックスの命令の比較はこれくらいにしておきます。Pythonでは「forward(●)」と「fd(●)」のように紹介したメソッドと同じ動きをするメソッドが他にもあります。

ハマったこと

タートルグラフィックスだからといって、ファイル名に"turtle.py"という名前を付けてはいけません。turtleのライブラリをインポートするのに、本来のライブラリを参照しなくなって、次のようにエラーになってしまいます。うっかり、やってしまいそうなミスなので注意しましょう。

Traceback (most recent call last):
File “C:/Users/hogehoge/Desktop/turtle.py", line 1, in <module>
from turtle import *
File “C:/Users/hogehoge/Desktop\turtle.py", line 3, in <module>
color('red’,’yellow’)
NameError: name 'color’ is not defined

とか

Traceback (most recent call last):
File “<pyshell#4>", line 1, in <module>
t=turtle.Turtle()
AttributeError: module 'turtle’ has no attribute 'Turtle’

といったエラーが返ってきます。正しいプログラムをコピペして試しても動かないので、かなり見つけるのに手間がかかります。

おわりに

このようにPythonでのタートルグラフィックスを紹介しましたが、「Scratchやドリトルといったプログラミング言語でもタートルグラフィックスが扱えるのに…」、「ブロックや日本語でプログラミングできるというのに…」、「わざわざ同じことを英語の命令を書かなくちゃいけないんだろう?」とScratchやドリトルを学んだ生徒は思うような気がします。そんなわけで、学校の授業ではPythonでのタートルグラフィックスの出番はなさそうに思っていますが、今回比較したようにプログラミング言語が違っても対応する命令があることを学ぶことはできそうです。このサイトのシンタックスハイライト機能を活かすために、これからも私はあえて記事でPythonのタートルグラフィックスを使うと思います。

それでは、今回はおしまい。ではまた。

Posted by 春日井 優