このページでは Procedureタブを使って実際にプログラミングを行う。
ボタンの作成
1. File > New を選び、新しいファイルを作る。
左上の Add ボタンをクリックし(下図参照)ボタンを置きたい場所をクリックする。
2. 作成したボタンを右クリックしてEditを選ぶ。コマンド欄に
setup
と記入し、OKボタンを押す。
このままではボタンをクリックした時に "Nothing named SETUP has been defined" というエラーが
出てしまう。和訳すると「SETUP が定義されていません」となる。
setup処理を定義する
3. Procedureタブをクリックし、以下のように書く。
to setup
clear-all
create-turtles 100
ask turtles [ setxy random-xcor random-ycor ]
end
各処理(関数)は
to 処理名
処理
end
で記述される。上の例では 「setup」という処理を定義している。
2行目の clear-allでは画面のクリア、
3行目の create-turtles 100でタートルを100個描画するよう命令している。
4行目の ask turtles [ setxy random-xcor random-ycor ]では、
ask turtles [ ] で、各タートルに [ ] 内の命令を実行するよう伝えている。命令内容は
[ setxy random-xcor random-ycor ] xy座標をランダムに決定し、タートルを描画する である。
実行すると、以下のような図形が描画される。
100個のタートル( =矢印 )がランダムな位置に描画されていることが分かる。
go(メイン動作)を定義する
4. setupのときと同様に新しいボタンを作成する。
コマンドの部分に「go」と書き、その上の Foreverにチェックを入れOKボタンを押す。
下図のようにボタンに矢印マークがつけばOK。
5. goの処理を定義する。
Procedureタブをクリックし、以下のように書き加える。
to go
move-turtles
end
ここでは、「 go というボタンを押すと move-turtle という処理が行われる」と記述されている。
このように、処理の中で別の処理を呼び出すことが出来る。
(関数の入れ子みたいな感じ)
続いて、move-turtle の処理を定義する。
to go 〜 end の後に、以下のように書き加える。
to move-turtles
ask turtles [
right random 360
forward 1
]
end
3行目の right random 360では、360度の中からランダムに角度を選ぶことを意味し、
4行目の forward 1で、1歩進むことを意味している。
この2つの命令を
ask turtles [ ]
で、1つ1つのタートルに実行させている。
Interfaceタブに戻って setup、go ボタンを押すと、
各タートルがうねうねと進んでいく様子が見られる。
背景色の変更
setupを以下のように書き換える。
to setup
clear-all
setup-patches
setup-turtles
end
ここでは、画面の初期化(clear-all)に加えて
setup-patches
setup-turtles
の2つの処理を行わせている。
setup内に直接処理を記入するのではなく、別に処理関数を作ってその名前を書く方が
ソースコードが見やすくなる。
次に、setup-patches の処理を記述する。
to setup-patches
ask patches [ set pcolor green ]
end
ここでは背景色を緑色に変更している。
また、setup-turtles の処理も記述する。
to setup-turtles
create-turtles 100
ask turtles [ setxy random-xcor random-ycor ]
end
先ほどと同じく、100個のタートルをランダムな位置に配置させる処理を行わせる。
ここまで書いたら Interfaceタブに切り替えて setup ボタンを押す。
すると以下のような画像が出てくる。