5. りんごからの距離を計測する

← 目次に戻る

< 4. ネコを動かす 6. 自然淘汰 >

ネコが動き終わったらりんごからの距離を計測します。「クローンされたとき」のブロックに続く以下の部分です。

figure 26

「りんごからの距離を計測する」の中身は以下の通りです。

figure 27

「『りんご』までの距離」で「りんご」スプライトまでの距離が得られるので、これを変数「りんごからの距離」に入れます。

もしネコが障害物にぶつかっていた場合は、りんごからの距離に「ペナルティ」に設定した値 10 を加えています。ネコが障害物にぶつかっているかどうかは、「障害物にぶつかっているか?」のリストの「ネコのID」番目に「はい」がセットされているかどうかでわかります。

そして、「距離のリスト」の「ネコのID」番目に、「りんごからの距離」の値を入れています。

こうして動き終わったそれぞれのネコのりんごからの距離が「距離のリスト」にどんどん入っていきます。

figure 29

メインの処理に戻ります。

1世代あたりのネコ100匹のクローンがすべて動き終わり、「距離のリスト」の長さがネコの数 100 になったら、念のために2秒待ったあと、ネコ全体の平均距離を求めます。

figure 28

「平均距離を求める」ブロックの内容は以下の通りです。

figure 30

変数「総距離」に0をセットしておいて、i を 1 からネコの数の 100 まで変えていきながら、「距離のリスト」から次々ネコのりんごからの距離を取り出して加えていきます。最後に「総距離」を「ネコの数」で割って、その世代の平均距離を求め、変数「平均距離」にセットしています。

以上で本章の説明は終わりです。

最後に「りんご」スプライトのスクリプトを載せておきます。

figure 33

スクリプトを開始したら、x座標 220、y座標 0 にりんごを配置し、大きさを 30% にしています。

< 4. ネコを動かす 6. 自然淘汰 >

← 目次に戻る