- ベストアンサー
RPGで誰が攻撃を受けるのかを決めたい
よくあるRPGゲームで複数パーティだと基本となる処理だと思うのですが 自分にはいまいち分かりません。 ・構造体 member_info[4]; (構造体のメンバはHP,MPなど、ここにランダムの範囲を制御するメンバを入れたほうがいい?) ・パーティは4人組 ・パーティの先頭にいる人ほど敵からの攻撃を受けやすい ・100でランダムを発生させた結果で誰が攻撃を受けるか決定する(例えば 1人目(member_info[0])の場合は0~24までの数がでれば攻撃を受ける、 同様に2人目(member_info[1])は25~49) というシステムを作りたいのですが、その場合のアルゴリズム(プログラム)は どのようになるのでしょうか? 例えば、4人均等な確率で攻撃を受けるとしたら単純に25ずつで区切っていけば 良いと思うのですが、誰かが死んで3人とかになってた場合とかも考慮しないといけないですし、 先頭にいる人ほど受けやすいのですから、ある程度偏りを作らねばなりません。 その偏りを手動じゃなくて、どうプログラムで組んでいけるのかが知りたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
★攻撃を受ける時の『受け易さ』変数をメンバに追加する。 ・つまり、乱数で『100』が出たときに誰かが攻撃を受けるのならば、 1人目、2人目、3人目、4人目の『受け易さ』変数を 『4』、『3』、『2』、『1』とします。分かりますか? ・そして、『4 : 3 : 2 : 1』の合計10の乱数(0-9)を発生させて、 0~3(4の割合) が出たら1人目にダメージを、 4~6(3の割合) が出たら2人目にダメージを、 7~8(2の割合) が出たら3人目にダメージを、 9(1の割合) のみが出たら4人目にダメージが受ける仕組みです。 ・これで、単純に先頭にいる人ほど敵からの攻撃を受けやすくなり、 さらに『1 : 1 : 1 : 1』とすれば、4人の受ける攻撃が平均して25%の 確立で攻撃を受けます。乱数では合計の4(0-3)にします。 ・また、誰かが死んで3人とかになった場合は、死亡したメンバ以外を 『3 : 2 : 1』と書き換えて処理すればよいのです。乱数は 0-5 です。 ・他にも、『無敵』変数を追加すればそのメンバには全く攻撃を受けない 処理も出来ます。→この場合は、死亡フラグと同じで『無敵』以外の メンバを『3 : 2 : 1』と書き換えます。分かりますか? 余談: ・昔、私もRPGゲームを作りました。 ・RPGゲームで有名な『ドラゴン・クエスト』シリーズを参考にね。 ・それで、思ったほどに『ドラゴン・クエスト』は出来が良いことに 気づきました。→自分で作ってみて大変だとか、なるほど。ってね。 ・主人公データ、その名前データ、敵名データ、魔法データ、道具データ 地形データ、イベントデータなどを用意するのが面倒でガイドブックを 参考にデータを丸写しして作っていました。→個人で使っていたので 著作権法の違反にはなりませんよね。→ネットにはアップしていないし。 ・ただ、地形データと主人公名は自分で決めましたけど。 ・以上。おわり。参考にして下さい。
その他の回答 (1)
- MrBan
- ベストアンサー率53% (331/615)
基本的なアルゴリズムは#1の方のもので不都合ないと思いますが、 隊列変更等も考えるなら、 > 『受け易さ』変数をメンバに追加する。 キャラのメンバとはせずに、隊列クラス等を別途作ってそちらに持たせてもよさそうです。 キャラの体型やクラス特性で変わる偏りならキャラのメンバでもいいでしょうし、 隊列とキャラの両方に持つ形なども考えられます。 データの持ち方はどう処理したいか、システムの方針にもよりますのでご参考までに。
お礼
ご返答ありがとうございます。 別々に持たせることも考えてみたいと思います。
お礼
ご返答ありがとうございます。 自分はやたら大きい値でランダムをさせて考えていましたが、 >『4 : 3 : 2 : 1』の合計10の乱数(0-9)を発生させて、 と最小の単位で無駄をなくして考えることが参考になりましたし 知りたかったところです。参考になりました。 たしかにドラクエはいいですね。 ちなみに自分は月並みになりますが3が好きです。