3.2 複数のタートルを並行的に使う

クラス名の例

a 要点 命名法

  1. val t:Turtle = newTurtle(0,0) のようにして生成する   (この式についての解説も参照下さい。)
    データ型
  2. その生成したタートルについて

     t.forward(100)
     t.left
    

    メソッドを呼ぶ  のように タートルを指定した描画関数(メソッドとも呼ぶ)を使う
     (この ‘.’ でつなぐ記法についての解説 も参照下さい。)
    プログラム例
    メソッド呼出

  3. そのタートルに円を描かせる(ような関数を作る)場合は

     def circ(len:Int, t:Turtle)
    

    のように タートルを引数で渡し、関数内部で
    その引数 t を t.left などのように使う
    並行

  4. runInBackground { 一連の処理 } という記法で
       各タートルの並行動作ができる

プログラム例

図は、生成したタートルがどのように受け渡しされていくかを示したもの。
値の伝搬

turtle0

本章の

失敗例 失敗例1

clear
runInBackground{left ; forward(100)}
runInBackground{left ; forward(100)}

対策:1つの亀に対する操作を複数スレッドから行わないことに決めておくこと。 スレッド