TurtleEditと「亀場」を使うための準備
このページでは、このページの作者の自作ソフトのテキストエディタTurtleEditと、 発展教材『亀場でプログラミング』を用いてプログラミング学習を行うための準備について説明します。
TurtleEditのインストールと準備
TurtleEditはコーディングと実行を行うための環境を提供します。
TurtleEditのページにアクセスし、ご自分の環境用の実行ファイルをダウンロードしてください。 次に、実行ファイルを起動し、実行メニューの中から設定を選択します。続いて、以下の設定を行っておきます:
- インタプリタにチェックを入れます。
- 実行コマンドの欄に、Pythonを起動するためのコマンドを記述します。
Python 3のコマンド名がpython3で、適切にPATHが設定されている場合
python3 -u %f
と記述します。"-u"の前後には半角スペースを入れてください。
- 亀場のパスと亀場を自動起動については、亀場でプログラミングを利用する際に必要な設定ですが、はじめは、設定を変えずにそのままにしておきます。
- 文字コードは必ずUTF-8を選択、フォントは好きなものに変更しても構いません。
- 最後にOKボタンを押して設定完了です。
TurtleField(亀場)のインストール
このサイトでは、学習教材として 亀場でプログラミング を使っている箇所があります。 「亀場(TurtleField)」とは、Pythonプログラムを使ってコンピューター・グラフィックスや、シミュレーションを行うためのソフトウェアです。 使っているシステム用の「亀場サーバー」を選んで、インストールしておいてください。
亀場サーバーをインストールしたら、TurtleEditの実行メニューの設定で、 亀場のパスを設定しておきます。
ボタンを押して、亀場サーバーの実行ファイルを選択すると、亀場のパスが設定できます。亀場を使う場合は、亀場を自動起動にチェックを入れておくことで、Pythonコードの実行と同時に、亀場サーバーが自動的に起動されます。 亀場が必要無い場合は、チェックを外しておきます。
動作の確認
この箇所重要!
まず、turtle3.pyをダウンロードして、rect.pyと同じ場所に保存しておきましょう。
以下のサンプルプログラムをTurtleEditのウィンドウにコピーし、保存します(ファイル名は rect.py
としましょう)。
rect.py
from turtle3 import Turtle t=Turtle("localhost") # 亀場との通信を開始する t.clr() # 画面とゾンビ亀を一端消去する t.rst() # 亀の位置を初期設定する(亀は原点に居る) t.pd() # ペンを下げる t.fd(100.0) # 前進 100 t.lt(90.0) # 左回転 90 t.fd(100.0) # 前進 100 t.lt(90.0) # 左回転 90 t.fd(100.0) # 前進 100 t.lt(90.0) # 左回転 90 t.fd(100.0) # 前進 100
TurtleEditの
ボタンを押します。もしエラーが表示されたら、コピーし忘れている箇所が無いか、 turtle.pyがrect.py同じ場所に保存されているかを確認してください(その際、 ボタンを使うのが便利)。すべてがうまくいったら、四角いウィンドウ(「亀場」)が現れ、そこに四角形が描かれるはずです。
亀場の扱いに慣れておく
亀場の四角いウィンドウは、そのまま表示しておいても構いませんが、手動で終了させたい場合は、 「亀」が表示されているウィンドウの上をマウスで右クリックして、メニューから Exit を選んでください。
その他、亀場を操作するためのいくつかの機能も同じメニューで操作できます。
詳しい使い方は亀場でプログラミングのページを参照してください。 特に、亀場に「ゴミ」が残っているときは、メニューから"Clear Field"(描画内容をクリア)、 "Erase Zombie"(居残っている亀を消去)を選んで、手動で消去しなければならない場合があるので注意が必要です。
亀場の四角いウィンドウが画面から「消えて」しまった場合、ウィンドウを「最小化」して見えない状態になっていないか確認しましょう。 デスクトップの下側に起動中のアプリケーションを表す「箱」が表示されているので、その中に亀場のそれが無いか、クリックして、確かめると良いでしょう。
1台のパソコンで起動可能な亀場は1つだけです。2つ目を起動すると、画面に赤い字で英文の警告が表示されるので、そのウィンドウは閉じてください。
この課題は、Pythonプログラミングの「反復処理」あたりまでを勉強した後に挑戦してみてください。
亀場で練習:花模様を描く
以下は、反復処理を使って、下図(左)のような6角形を亀場に描くプログラムの例になります:
あらかじめturtle3.pyをダウンロードして、このプログラムと同じディレクトリ内に保存しておいてください。
from turtle3 import Turtle # Python2では、turtle3をturtleに t = Turtle("localhost") # 亀場と接続 t.clr() # 画面をクリア t.rst() # 亀を中央・右向きにリセット t.pd() # ペンを下ろす for n in range(0,6,1): t.fd(100) # 100前進 t.lt(60) # 左に60度回転 t.pu() # ペンを上げる
描画後の亀場の様子
左:「ひな形」プログラムの実行結果。原点で右側を向いていた亀は、6角形を描いた後、再び原点に戻り、右側を向いた状態にある。
右:目標とする図形。
二重のループ構造を使ってこのプログラムを改修し、6角形を沢山並べることで、上図(右)のような花柄模様を描きなさい。
ヒント
ゴールとなる図形は、6角形を24回繰り返し描いて作られています。
6角形を描いた後で、亀の方向を変えてから、次の6角形を描く必要があるはず。方向を変えるにはlt(角度)
またはrt(角度)
を使います。それぞれ、左回転(Left Turn)、右回転(Right Turn)、を表します。
pd()
の直前にcol(赤,緑,青)
を指定すると、線の色を変えることができます。
ここで、"赤,緑,青" は、三原色の強度をそれぞれ0から1までの数値で指定。
例えば、
col(1,1,0)
は黄色を指定したことになります。色の指定をしない場合、あらかじめ赤(col(1,0,0)
)が設定されています。
亀場で練習:「植物」の構造のシミュレーション
あらかじめturtle3.pyをダウンロードして、このプログラムと同じディレクトリ内に保存しておくこと。
右のサンプルプログラムは、
1. カメを左に20度回転し、ペンを下げてstep進みペンを上げる
2. その位置・方向で、stepを現在の値の0.6倍にして、同じ動作を行う
3. 後ろ向きにstep戻って、右に20度回転する
(カメの角度は元に戻る)
4. 次いで、カメを右に20度回転し、ペンを下げてstep進みペンを上げる
5. その位置・方向で、stepを現在の値の0.7倍にして、同じ動作を行う
6. 後ろ向きにstep戻って、左に20度回転する
(カメの角度は元に戻る)
を、stepが10.0以下になるまで、ひたすら繰り返す構造になっています。
亀場の解説ページには、いくつかのサンプルプログラムが掲載されています。 その中の「ツリーの描画」のプログラムを以下に示します:
from turtle3 import Turtle t=Turtle("localhost") def branch(step): if step<10.0: return else: t.lt(20) t.pd() ; t.fd(step) ; t.pu() branch(step*0.6) t.bk(step) t.rt(20) t.rt(10) t.pd() ; t.fd(step) ; t.pu() branch(step*0.7) t.bk(step) t.lt(10) t.clr() t.rst() t.col(0.1,0.7,0.2) t.jump(0,-220) t.north() branch(150)
このサンプルプログラムをTurtleEditにコピー&ペーストし、ファイル名 tree.py で保存し、実行してみましょう。動作が確認できたら、以下のシミュレーションを行ってみてください。
- コードの中から
branch(step*0.6)
という箇所を見つけ、0.6を(0から0.6の間くらいの)別の数値に変えてプログラムを実行し、図形の変化を観察する。branch(step*0.7)
の箇所についても同様。 - 上記の箇所を元に戻した上で、コードの中から
lt(20) ; ... rt(20)
およびrt(10) ; ... lt(10)
の箇所を見つけ、 20と10の数値をペアを別の数に変えて、変化の様子を観察する。lt(7) ; ... rt(7) ; ... rt(30) ; ... lt(30) ;
のように、「ペア」同士は同じ数値になるようにします。 - 左図も参考にして*、それぞれの数値の役割を考えながら生成されるパターンを予想し、シミュレーションで検証してみましょう。それを踏まえて、下図(左)のような「樅の木」**を描けるように改修に挑戦してみてください。
* プログラム中に登場する lt( ), rt( ), pd( ), pu(), fd(), bk()などの命令(「関数」と呼ぶ)の動作についてはこちらのページに説明があります。
** 下図(右)に生成のために必要な情報を示しておきます。元々のサンプルプログラムは、2本の枝の分岐で構成されていますが、「樅の木」は3本の枝の分岐で構成されているので、もう1本、枝を追加しなくてはならない点に注意。