よくあるRPGゲームで複数パーティだと基本となる処理だと思うのですが
自分にはいまいち分かりません。
・構造体 member_info[4]; (構造体のメンバはHP,MPなど、ここにランダムの範囲を制御するメンバを入れたほうがいい?)
・パーティは4人組
・パーティの先頭にいる人ほど敵からの攻撃を受けやすい
・100でランダムを発生させた結果で誰が攻撃を受けるか決定する(例えば
1人目(member_info[0])の場合は0~24までの数がでれば攻撃を受ける、
同様に2人目(member_info[1])は25~49)
というシステムを作りたいのですが、その場合のアルゴリズム(プログラム)は
どのようになるのでしょうか?
例えば、4人均等な確率で攻撃を受けるとしたら単純に25ずつで区切っていけば
良いと思うのですが、誰かが死んで3人とかになってた場合とかも考慮しないといけないですし、
先頭にいる人ほど受けやすいのですから、ある程度偏りを作らねばなりません。
その偏りを手動じゃなくて、どうプログラムで組んでいけるのかが知りたいです。
No.1ベストアンサー
- 回答日時:
★攻撃を受ける時の『受け易さ』変数をメンバに追加する。
・つまり、乱数で『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ゲームで有名な『ドラゴン・クエスト』シリーズを参考にね。
・それで、思ったほどに『ドラゴン・クエスト』は出来が良いことに
気づきました。→自分で作ってみて大変だとか、なるほど。ってね。
・主人公データ、その名前データ、敵名データ、魔法データ、道具データ
地形データ、イベントデータなどを用意するのが面倒でガイドブックを
参考にデータを丸写しして作っていました。→個人で使っていたので
著作権法の違反にはなりませんよね。→ネットにはアップしていないし。
・ただ、地形データと主人公名は自分で決めましたけど。
・以上。おわり。参考にして下さい。
ご返答ありがとうございます。
自分はやたら大きい値でランダムをさせて考えていましたが、
>『4 : 3 : 2 : 1』の合計10の乱数(0-9)を発生させて、
と最小の単位で無駄をなくして考えることが参考になりましたし
知りたかったところです。参考になりました。
たしかにドラクエはいいですね。
ちなみに自分は月並みになりますが3が好きです。
No.2
- 回答日時:
基本的なアルゴリズムは#1の方のもので不都合ないと思いますが、
隊列変更等も考えるなら、
> 『受け易さ』変数をメンバに追加する。
キャラのメンバとはせずに、隊列クラス等を別途作ってそちらに持たせてもよさそうです。
キャラの体型やクラス特性で変わる偏りならキャラのメンバでもいいでしょうし、
隊列とキャラの両方に持つ形なども考えられます。
データの持ち方はどう処理したいか、システムの方針にもよりますのでご参考までに。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
教えて下さい
-
vba ドロップダウンリストの図...
-
メモ帳(テキストデータ)をExc...
-
二分探索の平均探索回数
-
VBA 円グラフ 特定条件に一致し...
-
合計3TBのデータのハッシュ値を...
-
【エクセル】測定時間がバラバ...
-
Excel VBAでのCSVファイル書き...
-
エクセルで、2つのデータを比較...
-
不規則なデータのfft処理
-
カンマからスラッシュに
-
ACCESS VBA インデックスが有効...
-
ビットシフトについて
-
VBA 空白セルを削除ではない方...
-
CString型の文字列連結について
-
C#でヒストグラムの作り方
-
C# でDataTableの更新を高速化...
-
文字の上下反転処理
-
delphi でグラフ表示
-
UserForm1.Showでエラーになり...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
教えて下さい
-
配列でデータが入っている要素...
-
【エクセル】測定時間がバラバ...
-
【プログラム】プログラミング...
-
メモ帳(テキストデータ)をExc...
-
VBA 空白セルを削除ではない方...
-
特定のデータの抽出方法を教え...
-
EXCELVBAでSQLserverからデータ...
-
エクセルで2つの時系列のデー...
-
多量のSUMIF式を軽くしたい
-
この行は既に別のテーブルに属...
-
C# ソケット通信でデータ受信時...
-
カンマからスラッシュに
-
S9タイプからXタイプにデータ...
-
[C言語] コメント文字列を無視...
-
ページ数を求めたい
-
ブレーカー落ちで壊れたりしな...
-
Accessで該当データにフラグを...
-
シーケンサにパソコンからアク...
-
CString型の文字列連結について
おすすめ情報