緑の旗をクリックしてプログラムをスタートすると、ネコのコスチュームや大きさ、そして各種変数を初期化したあと、「遺伝子を作る」処理をおこないます。
ネコのコスチュームは2種類、通常のスクラッチキャット(通常のネコ)と、障害物にあたったことがわかるように、赤く塗ったネコ(衝突したネコ)を用意しています。
最初のコスチュームに「通常のネコ」を指定し、あとでクローンしたときには表示するので、それまで隠した状態にし、大きさは20%に指定しています。
「世代」は現在の世代を表しており、最初は1です。「世代の最大値」には何世代目までプログラムを実行するかを設定します。
「移動距離」はネコが一度に移動する距離です。「ネコの数」は1世代あたりに登場するネコの数です。「遺伝子の長さ」は文字通り遺伝子の長さです。これが長いほど1世代あたりにネコが移動できる総距離が長くなります。
「ペナルティ」はネコが障害物に当たったときに受けるペナルティで、このペナルティの分だけりんごからの距離を計算するときに加算されます。つまり、ネコは障害物にぶつからないでりんごに向かった方が有利となります。
「突然変異が起こる確率(%)」には突然変異が起こる確率をパーセンテージで設定します。ここでは3を設定しているので、3パーセントとなります。
以上登場した変数は「すべてのスプライト用」ですが、以降登場する変数は特に説明がない場合は「このスプライトのみ」で作成しています。
「遺伝子を作る」処理は以下の通りです。
「遺伝子のリスト」というリストを用意し、ネコの数(100)分の遺伝子をリストに追加します。
このプログラムに登場するリストはすべて「すべてのスプライト用」で作成しています。
最初に「遺伝子のリスト」のすべてを削除し、ネコの数、つまり100回、枠で囲んだ遺伝子を作る処理を繰り返します。
枠で囲んだ部分の処理を見ていきましょう。
「遺伝子」という変数にネコ一匹分の遺伝子をセットします。最初に「遺伝子」に空白をセットして何も入っていない状態にします。
遺伝子の長さ(150)の回数だけ次の処理を繰り返します。
遺伝子のタイプは4種類、上に移動することを表すU、下に移動を表すD、右に移動を表すR、左に移動を表すLがあり、1から4までの乱数で「遺伝子タイプ」を決定します。
そしてもし1なら変数「遺伝子」に入っている遺伝子にUをつなげ、2なら同様にD、3ならR、4ならLというようにつなげる処理を遺伝子の長さ分だけ繰り返します。
最後に「遺伝子のリスト」に変数「遺伝子」の値を追加しています。
実際にプログラムを実行してみると、以下のように遺伝子のリストに100匹分のネコの遺伝子(U、D、R、Lをランダムにつなげた文字列)がセットされます。
次の章では、遺伝子の指定通りにネコを動かす処理をみていきましょう。