TurtleEditから「亀場」を使うための準備

教育情報基盤センターの演習室においてテキストエディタTurtleEditを用いてプログラミング学習を行う際に, 発展教材「亀場でプログラミング」を使うための準備について,以下に説明する。

ステップ1. TurtleEditを開いて設定を変更する

Linuxデスクトップの左上の「アプリケーション」メニューをクリックし,「アクセサリー」や「プログラミング」の中からTurtleEditを選び起動する。

TurtleEditのウィンドウが表示されたら,「実行」メニューの中から「設定」を選ぶ。 すると,以下のようなウィンドウが現れるはずだ(細かい点は若干異なるかもしれない)。

tedit4icl-tfield-pref

ウィンドウの中程にある以下の設定項目を確認する:

  1. 「亀場のパス」の欄が/opt/cite/bin/tfield-linuxになっていることを確認
  2. 「亀場を自動起動」にチェックを入れる(初期状態ではチェックは入っていない)

設定が終わったらOKを押して完了。

「亀場」を使わないときは,「亀場の自動起動」のチェックを外しておく。

ステップ2. 動作を確認する

この箇所重要!

まず、turtle3.pyをダウンロードして、rect.pyと同じ場所に保存する。 Python 2を使っている場合はturtle.pyをダウンロード。

以下のサンプルプログラムをTurtleEditのウィンドウにコピーし、保存する(ファイル名は rect.pyとする)。

rect.py

# coding: utf-8
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
Python 2用
# coding: utf-8
from turtle 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同じ場所に保存されているかを確認する(その際、作業ディレクトリ確認ボタンを使うのが便利)。

すべてがうまくいったら、四角いウィンドウ(「亀場」)が現れ、そこに四角形が描かれるはずだ。

tfield-first-rect-example

ステップ3. 亀場の扱いに慣れる

亀場の四角いウィンドウは、そのまま表示しておいても構わないが、手動で終了させたい場合は、 「亀」が表示されているウィンドウの上をマウスで右クリックして、メニューから Exit を選ぶ。

その他、亀場を操作するためのいくつかの機能も同じメニューで操作できる。

詳しい使い方は亀場でプログラミングのページを参照のこと。 特に、亀場に「ゴミ」が残っているときは、メニューから"Clear Field"(描画内容をクリア)、 "Erase Zombie"(居残っている亀を消去)を選んで、手動で消去しなければならない場合があるので注意。

亀場の四角いウィンドウが画面から「消えて」しまった場合、ウィンドウを「最小化」して見えない状態になっていないか確認すること。 デスクトップの下側に起動中のアプリケーションを表す「箱」が表示されているので、その中に亀場のそれが無いか、クリックして、確かめると良い。

1台のパソコンで起動可能な亀場は1つだけである。2つ目を起動すると、画面に赤い字で英文の警告が表示されるので、そのウィンドウは閉じておくこと。


この課題は、Pythonプログラミングの「反復処理」あたりまでを勉強した後に挑戦すること。

tfield-icon亀場で練習:花模様を描く

以下は、反復処理を使って、下図(左)のような6角形を亀場に描くプログラムの例である:

あらかじめturtle3.pyをダウンロードして、このプログラムと同じディレクトリ内に保存しておくこと。

# coding: utf-8
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角形を描いた後、再び原点に戻り、右側を向いた状態にある。

右:目標とする図形。

tfield-capture-off-centerd-hexagon tfield-capture-flower-pattern

二重のループ構造を使ってこのプログラムを改修し、6角形を沢山並べることで、上図(右)のような花柄模様を描きなさい。

icon-hint ヒント

ゴールとなる図形は、6角形を24回繰り返し描いて作られている。

6角形を描いた後で、亀の方向を変えてから、次の6角形を描く必要があるはず。方向を変えるにはlt(角度)またはrt(角度) を使う。それぞれ、左回転(Left Turn)、右回転(Right Turn)、を表す。

pd()の直前にcol(赤,緑,青)を指定すると、線の色を変えることができる。 ここで、"赤,緑,青" は、三原色の強度をそれぞれ0から1までの数値で指定。 例えば、 col(1,1,0)は黄色を指定したことになる。色の指定をしない場合、あらかじめ赤(col(1,0,0))が設定されている。


tfield-icon亀場で練習:「植物」の構造のシミュレーション

あらかじめturtle.hをダウンロードして、このプログラムと同じディレクトリ内に保存しておくこと。

右のサンプルプログラムは、
1. カメを左に20度回転し、ペンを下げてstep進みペンを上げる
2. その位置・方向で、stepを現在の値の0.6倍にして、同じ動作を行う
3. 後ろ向きにstep戻って、右に20度回転する
(カメの角度は元に戻る)
4. 次いで、カメを右に20度回転し、ペンを下げてstep進みペンを上げる
5. その位置・方向で、stepを現在の値の0.7倍にして、同じ動作を行う
6. 後ろ向きにstep戻って、左に20度回転する
(カメの角度は元に戻る)
を、stepが10.0以下になるまで、ひたすら繰り返す構造になっている。

tfield-tree

亀場の解説ページには、いくつかのサンプルプログラムが掲載されている。 その中の「ツリーの描画」のプログラムを以下に示す:

# coding: utf-8
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 で保存し、実行してみよ。動作が確認できたら、以下のシミュレーションを行うこと。

  1. コードの中から branch(step*0.6) という箇所を見つけ、0.6を(0から0.6の間くらいの)別の数値に変えてプログラムを実行し、図形の変化を観察せよ。 branch(step*0.7)の箇所についても同様。
  2. 上記の箇所を元に戻した上で、コードの中から lt(20) ; ... rt(20) および rt(10) ; ... lt(10)の箇所を見つけ、 20と10の数値をペアを別の数に変えて、変化の様子を観察せよ。 lt(7) ; ... rt(7) ; ... rt(30) ; ... lt(30) ; のように、「ペア」同士は同じ数値になるようにせよ。
  3. 左図も参考にして*、それぞれの数値の役割を考えながら生成されるパターンを予想し、シミュレーションで検証してみよ。それを踏まえて、下図(左)のような「樅の木」**を描けるように改修せよ。

* プログラム中に登場する lt( ), rt( ), pd( ), pu(), fd(), bk()などの命令(「関数」と呼ぶ)の動作についてはこちらのページに説明がある。

** 下図(右)に生成のために必要な情報を示した。元々のサンプルプログラムは、2本の枝の分岐で構成されていたが、「樅の木」は3本の枝の分岐で構成されているので、もう1本、枝を追加しなくてはならない点に注意。

tfield-capture-fir-tree tfield-fir-tree