人工生命をつくるにはプログラミングが必要です。
普通こういったプログラムを作るのには大変な時間と、知識が必要になるのですが、ネットロゴはたいへん手軽にプログラムを作ることができます。(それでも覚えることはいろいろありますが、英語の勉強にもなるので一石二鳥です)
プログラムの中身を見るには上のprocedureタブを押します。
すると英語の文章のような、よくわからない文がバーと出てきます。
プログラムというと難しそうですが、コンサートのプログラムなどと同じようにコンピュータにさせることを書いた手順書です。
コンピュータが理解できるのは0と1だけですが、人間にもわかりやすいように翻訳してくれるコンピュータ専用の言葉がいろいろあります。
スターロゴはロゴという教育用の言葉を元に作られているので、普通の英語の文に近く順番に見て行けばそれほど難しくありません。
ライフゲームのプログラムは、プログラミングをやったことがある人が見ると、こんな短いプログラムで作れるのかとちょっと驚くと思います。
意味は大体下のような感じです。
patches-own [
living? ;; 生きているかどうか
live-neighbors ;; 隣のセルがいくつ生きているか
];;パッチ変数の設定(パッチはセルのこと)
to setup-blank ;;setup-blankが呼び出された時
ask patches ;;パッチに対して
[ cell-death ] ;;cell-deathを実行する
end ;;終了
to setup-random ;;setup-randomが呼び出された時
ask patches ;;パッチに対して
[ ifelse random-float 100.0 < initial-density ;;もしinitial-densityが100までのでたらめの数より小さいとき
[ cell-birth ] ;;cell-birthを実行する
[ cell-death ] ];;cell-deathを実行する
end ;;終了
to cell-birth ;;cell-birthが呼び出された時
set living? true ;;living?をtrue(真)に設定する
set pcolor fgcolor ;;色をfgcolorに設定する
end ;;終了
to cell-death ;;cell-deathが呼び出されたら
set living? false ;;living?をfalse(偽)に設定する
set pcolor bgcolor ;;色をbgcololrに設定する
end ;;終了
to go ;;goが呼び出された時
if mouse-down? ;;もしマウスボタンが押されていたら
[ stop ] ;; 描くのをやめるまでストップする
ask patches ;;パッチに対して
[ set live-neighbors count neighbors with [living?] ]
;;隣り合ったセルのうちliving?がtrue(真)のセルの数をlive-neighborsにセットする
ask patches ;;パッチに対して
[ ifelse live-neighbors = 3 ;;もしlive-neighborsが3だったら
[ cell-birth ];;cell-birthを実行する
[ if live-neighbors != 2
[ cell-death ] ] ];;それ以外の場合でlive-neighborsが2でなかったらcell-deathを実行する
end ;;終了
to add-cells ;;add-cellsが呼び出された時
if mouse-down? ;;マウスボタンが押されていたら
[ ask patch-at mouse-xcor mouse-ycor
[ cell-birth ] ];;マウスの場所のセルにsell-birthを実行する
end ;;終了
to remove-cells ;;remove-cellが呼び出された時
if mouse-down? ;;マウスボタンが押されていたら
[ ask patch-at mouse-xcor mouse-ycor
[ cell-death ] ];;マウスの場所のセルにsell-deathを実行する
end ;;終了
ざっと見て行くと
to ○○
end
がひとまとまりになっていることに気がつきます。
○○はボタンや他のまとまりから呼び出されて実行されます。