星田オステオパシー

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

 では続きを・・ボンヤリとした構想を元にバッドステータス実装の続きです
 ちなみに、上の特殊攻撃をENEMYに使わせてHEROをBADにしていこうと言う狙い。前回、これをクロージャって書いたような気がするけど、厳密にはどうなんだろう・・lambda()の引数なしで全環境入れ込んだのをクロージャって言うのかも。これ、普通に関数ですもんね。あ、破壊的変更をしてるから関数ですら無いのか?

 対象をCHARACTER構造体に取るのでテスト

 さて、ここで問題が・・他の特殊攻撃と同列に「通常攻撃」も扱う必要があるので同じフォーマットでhit-attackも書きたいが・・どうしても必要な引数が多くなってしまって形が揃えられない。うーん・・一応、本体にhit-attackで呼び出して以前と同じように動くようには書いてみたが

 本体がこちら。対象CHARACTERを変更して、そのままPhaseエンド、と。ここに特殊攻撃を入れ込んでいくわけだが・・できるだけ共用部分を本体に残したいので戦闘終了後のMove回復とPHASEとTURNの更新を・・・

 ここに一度だけ書くことでまとめる。お、スッキリしたな

 ENEMYのSkillリスト内に存在する特殊攻撃をランダムでセレクトする関数を書く。比率を変えたい場合はSkillで増やしたい攻撃を多く書くというw方式。スキル数は決めずに可変対応できるようにする

 hit-attackの引数多すぎ問題の解決だけど・・今更大きく書き換えるのも大変なので、次回は最初からそういうのを考えておこう!と反省した上で、今回はこの手で凌ぐ。折角なので20面ダイスを使って偶数(で、かつENEMYが特殊攻撃持ち)の場合には特殊攻撃、それ以外では通常攻撃って事で

 数ターンENEMYに好き放題やらせたところ、無事に麻痺と毒をくらう事を確認。後は、この状態であれば1PHASE飛ばされるとか、ターン終了時にダメージとかの判定を作って反映するようにすれば良いな?

 んでその処理だけど・・多分On-tickにやらせないと駄目な気がする。
 という訳で、whenで条件分け。CHARACTER-Aliに1以上の要素があった場合には関数abnormalを行う(最下段)

 最下段アップ。まあ、こんな感じ?なんと初の試みなんですがabnormal
はデッチ上げです。構想としてはCHARACTERを食って、ステータスに影響を与えた後にメッセージ処理をすると

 この部分は現在通常攻撃のみ対応なので、ここに各特殊攻撃用のメッセージを入れていく。今はBATTLE-TEXTが真の時・・と言う条件だけど、毒だの石化だの判定できるシンボルを入れて場合分けが出来るように改造すると

 関数abnormalはこういう感じでwhenで判定して行けば・・あ、どれか一つでもバッドステータスになってたら、その後は他の(特殊)攻撃を受けるのかどうかも考えないと。石化してたら他の攻撃は全部受けないだろうし、全員石化したらゲームオーバーだろうしなぁ・・
 ま、次回以降でそのへん詰めていくか・・

 という訳で今回はここまで〜

 
  • Xでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

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

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