RPGの戦闘システムについての質問

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アバター
海Sea
記事: 102
登録日時: 13年前
住所: 大阪
連絡を取る:

RPGの戦闘システムについての質問

#1

投稿記事 by 海Sea » 11年前

いつも、ありがとうございます。
現在RPGのシステムを組んでいる途中です。
戦闘のシステムで詰まっていて、遅々として進まないので質問させて頂きます。
過去ログみたんですけどピンと来ませんでしたので(すいません・・・)

システムとしては、パーティー、モンスター、装備、
アイテム、魔法が現状実装済みです。
いわゆるステータス画面などで装備をしたり
アイテムや魔法を使用したり習得したり、
という部分まではできました。
モンスターも行動パターンや種類のデータを読み込むところまでできていて、
遭遇することはできます。

戦闘は、いわゆるドラクエ風の戦闘を考えているのですが、
素早さの順に敵味方を行動させる方法が思いつきません。
各敵味方の素早さを保持した後に、その保持した素早さをどう扱えば
その素早さを持つキャラが順々に行動するのかというところで
何かご参考になることはありませんでしょうか?

実際のデータの扱いでは、味方と敵はインスタンス変数として
HPや素早さなどのステータスを持っていて、
getメソッドでその値を参照できるようにしています。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: RPGの戦闘システムについての質問

#2

投稿記事 by softya(ソフト屋) » 11年前

そうですね。
完全にドラクエ的だとすると
1.コマンド入力が済んで戦闘開始時に戦闘順番待ちリストを作成します。
2.このリストは素早さの順でソートします。※ 乱数で素早さの数値を数%揺らがせるのも良いと思います。
3.出来上がったリストの順番で戦闘を行います。
で良いんじゃないでしょうか?

ATBだとまた別の工夫が必要ですけどね。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

とっち
記事: 56
登録日時: 12年前
住所: 岡山

Re: RPGの戦闘システムについての質問

#3

投稿記事 by とっち » 11年前

僕の方法としては、

1.キャラクタにactFlagという変数を持たせる。
2.actFlagは戦闘開始時に初期化される。
3.すべてのキャラクタを検索し、その中で、素早さが一番早く、かつ
actFlagが0(つまりまだ行動が終了していないもの)を返す関数を作る。
4.行動が終了するとそのキャラクタのactFlagを1にする。

まぁこんな方法もあるよというのだけお知らせしておきます。

アバター
海Sea
記事: 102
登録日時: 13年前
住所: 大阪
連絡を取る:

Re: RPGの戦闘システムについての質問

#4

投稿記事 by 海Sea » 11年前

softya(ソフト屋) さんが書きました:そうですね。
完全にドラクエ的だとすると
1.コマンド入力が済んで戦闘開始時に戦闘順番待ちリストを作成します。
2.このリストは素早さの順でソートします。※ 乱数で素早さの数値を数%揺らがせるのも良いと思います。
3.出来上がったリストの順番で戦闘を行います。
とっち さんが書きました: 1.キャラクタにactFlagという変数を持たせる。
2.actFlagは戦闘開始時に初期化される。。
4.行動が終了するとそのキャラクタのactFlagを1にする。
お二方ありがとうございます!
softyaさんととっちさんの提案を足して二で割って
まずリストをつくってソートし、フラグを持たせたキャラの中で
行動したかしてないかを判定し、速さ順に行動することができました!

閉鎖

“C言語何でも質問掲示板” へ戻る