
ではゴリラの破獄メソッドを作っていくか!最初はこういうのを考えました。Animal.specialのところにUncahinってのを設定して・・と

でも、普通に行動が変わるだけなのでSpecialとかいらなくない?と思い直してAnimalStatusに入れることにしました。ということはつまり、他の特殊能力もココで設定できるのでSpecialフィールドは不要になったということで・・

各インスタンスごとの頻度で行う行動をUpdate_animalからActionフィールドの値によって変更して送り込む

こういう感じでChaseも追加しよう

Mainループの中で各インスタンスを引数にして、Speedに応じた頻度でUpdate_animalにPlayerとかTruckを送り込む。

ActionがUnchainだった場合にはこういう感じで・・Truckの座標をチェックしてそこへ向かっていくと。座標が同じになった場合の処理はまだ書いてない


Claude先生にOKをもらったので同じ座標になった場合の処理を書く。捕まっていたAnimalのActionをNomalに戻して、座標をTruckと一緒にして解放すると

はっきりいって今回は完璧だろ!と思って実行してみると・・え?何コレは?Second mutableどーのこーの・・

うげー!出たよ借用権。参ったなぁ・・

うーん・・これは却下やな。ForでUpdateすることに意味があるんだから

これは理解できる

出来るかな?イメージとしてはRacketで散々やったように環境をまるごと持ち運んでリレーさせるって感じだからなぁ・・根本的に作り直す羽目になりそう

コードを提供した結果・・

いや、だから特定の動物だけを渡しても、結局Animalsを変更したいんだからスコープの関係上駄目なんでしょ?

まあ、現実的にはこれになりそうかな




更に、Unchain_movingのコードを渡してみる。するとようやく納得してもらえたようだ(←すごいことだけどね)。なるほどIDか・・新たなインスタンスを作るんじゃなくて、Actionで使いまわすだけだから出来そうだな

でも現実問題としては一番変更が楽なインデックスベースになるだろう。最初からコレにしておくべきだったな


後でまとめて処理か・・例の一挙に前座標のキャラクターを消す時に考えたパターンか。今回は採用しないけど、考え方は面白いしエレガントなので勉強することにしよう

ところで今回の問題。もしかしてForで扱うAnimalsをIter_mut(可変)にしてるから問題なのであってただのIter()なら大丈夫だったのか?と質問

あ、そーなんだ!勉強になるなぁ・・
実は、もはやトランキライザーガンでやってみたかったことはほぼ実現できたので、とっとと次のゲームに行こうと思ってるんですが・・ま、最後は動くようにしてから立ち去るか・・次回は改修をやりまぁす!