見出し画像

第4章(完結):結合と混乱。それから反省

前回はexの自己増殖により人口爆発が起こり、様々なパターンが発生、なかなかに有機的なシュミレーションを実装できたように思います。
ただ、exの動きには妙な偏りがあるし、コードを解読したり直接編集する技術がないため、プログラム自体がどんどん冗長になっている印象があります。

これってきっとプロジェクト的には破綻する。そんな予感が微かにありました。
ChatGPTに頼りきりのため、どうしても機能がツギハギでもの凄く汚いのだ。多分。

そんな中追加機能

exの結合

ここまでくるともう半ばヤケクソです。行けるとこまで行ってやろうと。

worldの定義
・200×200の座標で表現された四角いエリアが表示されている。これをworldと呼ぶ(機能が複雑になるにつれ処理が重すぎるので小さくしました)
・各マスはマトリクスで表現され、座標それぞれは黒色=null、白色=ex、水色=hxの3つの状態のみが存在する
・worldは1秒を1ターンとして毎秒変化が起こる。これをdayと呼ぶ。2秒以上であればdaysである

hxの定義
・hxは水色のドットで表現する
・hxは1dayにいずれかのnullの座標にランダムに同時に1個出現する

exの定義
・worldには1daysに一回、いずれかのnullにexが1個出現する
・exの寿命は初期設定で3000daysである

exの移動
・exは上下左右、左上、左下、右上、右下、動かない(9方向)のいずれかに1ドットづつ移動をする

・各exは自分を中心として周囲8ドットの範囲にいるhxとexを視認可能
・hxが視認可能範囲内にいる場合、exはhxに向かって移動するための方向を優先的に選択する
・hxが視認可能範囲内にいない場合、exが視認可能範囲内にいるかどうかを調べる
自分より寿命の小さいexがいればそちらへ移動しexを攻撃する
寿命が高いexがいると、その反対方向に移動する
 自分と同じ寿命のexには近づくが、攻撃しない
・それ以外の場合、exはランダムな方向に移動する

・exは寿命により以下のように移動速度が変化する
-寿命が15000以下の場合、毎日移動
-寿命が15001~20000の場合、3日に1回移動
-寿命が20001~50000の場合、9日に1回移動
-寿命が50001~100000の場合、150日に1回移動
-寿命が100001~150000の場合、2500日に1回移動
-寿命が150001以上の場合、7000日に1回移動
 ※一度遅くなった移動速度が縮まることはない

exの捕食
・exはhxを捕食する。捕食行動はexがhxの座標に移動しhxは消滅
 exのその時の寿命に0.25を掛けたlife分、寿命が延長する
・ex同士が接触すると、寿命の大きいexは寿命が半分に減り、寿命の小さいexは1/4になる

exの自己複製
・exは寿命が15000daysを超えると、次のdaysにexを複製する
・複製されたexは、複製元のexに隣接するいずれかのマスに出現する
・複製されたexは、複製元のexと同じ寿命を初期値として持つ
・複製されたexと複製したexは、誕生から1625daysは自己複製できない
・exは1体につき1度までしか自己複製できない

Worldの環境変化
・経過日数が10000の倍数の場合、10個のhxを同時に生成する

exの結合
・寿命が15,000以上のexが隣接すると結合する
・結合したexは、結合したexの中央値に統一される
・結合したex同士は、基本的なexの移動ルールに従い移動する
・exの結合は解除されない
・結合したexはその時点でのスピードの1.25倍となる

定期的な餌
・経過日数が10000の倍数のタイミングで、500個のhxを生成する

結合後、なんだか一つの生命のように見えなくもない

うねうねと結合したexたちが周りのexを取り込んでいる。触手を伸ばして獲物を捉えているみたい。


だけど、ものすごくバグが多い。
要件通りに動いていないことが動きを観察しているとわかる。


これにて一旦終了

意図していない動きをしている。が、もう自分の手には負えません。
なので、一旦これでworldの更新はストップしたいと思います。
ただ、諦めたわけではなく、チャッピーと対話をする中で色々なことに気づけたし、そもそもの設計や要件定義に問題があったことが理解できました。

実は、反省を生かした新たなworldの実装や、他にも作ってみたいものがいくつか出てきたのでそちらを進めつつ、気が向いたが元祖worldの修正を進めます。

ふぅ。頑張った。

序章:https://wwwn.life/world/silence_w.html
第1章:https://wwwn.life/world2/silence_w.html
第2章:https://wwwn.life/world3/silence_w.html
第3章:https://wwwn.life/world4/silence_w.html
完結:https://wwwn.life/world5/silence_w.html


いいなと思ったら応援しよう!