星田オステオパシー

Racketで何か・・DD&D018 バッドステータス実装チャンレジ1

ちょっとだけリファクタリングっぽい事をしたんだけど、やってみるとそれほどコードが短くならなかったりで充実度はあんまり・・って感じでした。

という訳で予定通りバッドステータス関係の実装に挑戦です

 ただし、そのためには放置していたPHASEとTURNをカウント出来るようにならないとね(効果時間があるからね)
 例によって破壊的変更で、手番が次に回るタイミングでBATTLE-PHASEに数値を追加

 表示テストが面倒だったので仮の措置として名前の前にPHASEを出してます。
 一周回ったのでPHASEが4という感じです

 で、このPHASEがC-LIST(敵味方の総数)と一緒になったらTURNを1増やしてPHASEを0に戻す・・ってので行けるハズ・・と思ったけどうまくいかない。このChange-keyの中に仕込むとキャラの死亡やなんやでカウントがズレていってしまうし、そもそも表示がキーを押すまで変わらないので、内部ではともかく外部でお見せ出来るようなものではない

 ま、何事も無ければこうやって全員回るとターンが1増えるようには出来てるのだが

 で、色々と実験した結果PHASEへの変更は初期の通りで敵味方の手番変更時に行い、PHASE=C-LISTの数となった場合の変更はOn-tickに仕込みました。これで

 一周するとTURNがすぐさまTURNに+1、PHASEを0にリセットが出来て

 途中でキャラが脱落しても先頭キャラでしっかりとターンが更新されてるのを確認、やったぜ!

 そして宿直タイム。構想としてはバッドステータスを起こすクロージャを作って、それを敵のSkillにリストとして配置、HEROに隣接したらRandomで選ばれた種類の攻撃をHEROに行う、と。
 そのために動作の実験。なるほどなるほど・・

 最初は構造体でステータス保存用の変数を作って・・と思ってまして。これだとSet-xxx-ooo!が使えるので楽かと思ったのですが、変数(ここではtest)はキャラごとに別物を用意しないといけないという事が発覚。そこは自動で別物としてインスタンスになってくれないのか・・という事でボツ。敵の分までいちいち作ってられないから・・。

 リストは仕組み上破壊的変更が推奨されてないということもあってか(今回GPTに教えてもらいました)、組み込みではリストの任意の要素を破壊的変更することが出来ない。が、ベクターなら出来る・・ということでベクターで管理するか?と思ったり

 ま、でも結局リストで管理し、更新はリスト全体を生成するようにしました。これでPHASEの最初CHARACTERのステータスを探索して、0より多い要素の位置に従ってバッドステータスを特定し影響を及ぼす場合分けの関数を書く、と。TURNが更新された時に0より多い数値は−1されて0になったら効果消滅という感じで行けるんじゃないか!?と。さてどうなりますか・・

 という訳で各種テスト。Skillリストに各種攻撃クロージャーを束縛した変数をブッ込んで、List-refとRandomを組み合わせてENEMYの攻撃時に呼び出して対象のステータスリストを更新する、と。

 多分行けるんじゃないかぁ〜・・と、ここでちょうど24時半。今日はここまで〜
 次回はいよいよバッドステータスの部分を書こう!
  • Xでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

最近の「プログラミング」カテゴリーもっと見る

最近の記事
バックナンバー
人気記事