星田オステオパシー

RacketでCLIラピュタ06 戦闘関数完成

という訳で前回の続きで戦闘関数を・・ナウシカとは戦闘システムが変わっているので、もう流用せずに新作書き下ろしで

 まず、前回途中までだったbattle-setの続きを・・・Battle-readへ渡す時に、Bukiスロットに選択した武器の名前をキーにしてデータを構造体で読み込む

 テストの結果、オッケイ


 続きまして次のBattle-read部分。Enemiesスロットが空ならば勝利ということで勝利の場合のページへ、Master構造体の内容をリセット&今回使用した武器を持ち物から減らして送り込む。
 ただ、今回はまだMain-readを作ってないのでWINと表示するだけ。
 今回戦闘ではバトルごとに設定されたリミットターン数が決まっているので、Pages構造体のArgにそれを持たせておいて、本来の目的とは違うんだけど「自分が優先だった回数」をCdamageにして、「敵が優勢だった回数」をChoiceに入れてます。これはイケませんね・・


 そして戦闘の処理Evalと、今回もまとめた方が簡潔なのでPrintをまとめて。パズーは行動点+武器Point+D6、敵は行動点+D6。これを比べて優勢であればターン数を増やして勝った方に1を足してLOOPへ。互角の場合はターン数を増やさずに返すのがナイスかな

 ループ処理。決められたターン数とCturnが等しくなった時点で勝点を比べて勝っていれば勝ちページへ、でなければ負けページへ。パズーの勝ちは全勝した場合なのでBattle-readから飛ぶ。一度でも負ければ負けページなので、ここBattle-loopから飛ぶ、と。

 実際のPages構造体はこういう感じで・・勝った場合は157、負けたら124へ。最後の3がターンリミット数って感じで。
 実行すると(まだ画像データが無いので出ませんが)

 選んだ武器を構えて兵士に打かかる。どうもアイテム使用などは無いようなので実質オート戦闘。グループの一人目を打ち倒すと

 続けて兵士2が現れて打倒してEnemiesが空になると勝利ページへと。うーん、今回は非常にスムーズでしたな〜。
 今回、戦闘の仕組みがシンプルなのでキレイにREPLが決まった!

 今夜は以上でございます〜




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

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

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