いつも、ありがとうございます。
現在RPGのシステムを組んでいる途中です。
戦闘のシステムで詰まっていて、遅々として進まないので質問させて頂きます。
過去ログみたんですけどピンと来ませんでしたので(すいません・・・)
システムとしては、パーティー、モンスター、装備、
アイテム、魔法が現状実装済みです。
いわゆるステータス画面などで装備をしたり
アイテムや魔法を使用したり習得したり、
という部分まではできました。
モンスターも行動パターンや種類のデータを読み込むところまでできていて、
遭遇することはできます。
戦闘は、いわゆるドラクエ風の戦闘を考えているのですが、
素早さの順に敵味方を行動させる方法が思いつきません。
各敵味方の素早さを保持した後に、その保持した素早さをどう扱えば
その素早さを持つキャラが順々に行動するのかというところで
何かご参考になることはありませんでしょうか?
実際のデータの扱いでは、味方と敵はインスタンス変数として
HPや素早さなどのステータスを持っていて、
getメソッドでその値を参照できるようにしています。
RPGの戦闘システムについての質問
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: RPGの戦闘システムについての質問
そうですね。
完全にドラクエ的だとすると
1.コマンド入力が済んで戦闘開始時に戦闘順番待ちリストを作成します。
2.このリストは素早さの順でソートします。※ 乱数で素早さの数値を数%揺らがせるのも良いと思います。
3.出来上がったリストの順番で戦闘を行います。
で良いんじゃないでしょうか?
ATBだとまた別の工夫が必要ですけどね。
完全にドラクエ的だとすると
1.コマンド入力が済んで戦闘開始時に戦闘順番待ちリストを作成します。
2.このリストは素早さの順でソートします。※ 乱数で素早さの数値を数%揺らがせるのも良いと思います。
3.出来上がったリストの順番で戦闘を行います。
で良いんじゃないでしょうか?
ATBだとまた別の工夫が必要ですけどね。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: RPGの戦闘システムについての質問
僕の方法としては、
1.キャラクタにactFlagという変数を持たせる。
2.actFlagは戦闘開始時に初期化される。
3.すべてのキャラクタを検索し、その中で、素早さが一番早く、かつ
actFlagが0(つまりまだ行動が終了していないもの)を返す関数を作る。
4.行動が終了するとそのキャラクタのactFlagを1にする。
まぁこんな方法もあるよというのだけお知らせしておきます。
1.キャラクタにactFlagという変数を持たせる。
2.actFlagは戦闘開始時に初期化される。
3.すべてのキャラクタを検索し、その中で、素早さが一番早く、かつ
actFlagが0(つまりまだ行動が終了していないもの)を返す関数を作る。
4.行動が終了するとそのキャラクタのactFlagを1にする。
まぁこんな方法もあるよというのだけお知らせしておきます。
Re: RPGの戦闘システムについての質問
softya(ソフト屋) さんが書きました:そうですね。
完全にドラクエ的だとすると
1.コマンド入力が済んで戦闘開始時に戦闘順番待ちリストを作成します。
2.このリストは素早さの順でソートします。※ 乱数で素早さの数値を数%揺らがせるのも良いと思います。
3.出来上がったリストの順番で戦闘を行います。
お二方ありがとうございます!とっち さんが書きました: 1.キャラクタにactFlagという変数を持たせる。
2.actFlagは戦闘開始時に初期化される。。
4.行動が終了するとそのキャラクタのactFlagを1にする。
softyaさんととっちさんの提案を足して二で割って
まずリストをつくってソートし、フラグを持たせたキャラの中で
行動したかしてないかを判定し、速さ順に行動することができました!