オブジェクト指向でRPGの戦闘を作成する際の行動・メソッドの書き方について質問があります。Javaを使用しています。
戦闘部分作成は初めてです。
主なクラス構成・流れ
○○DataClassはファイル等からデータを入力
CharacterClass//HPなどのステータスや戦闘不能フラグ等を管理する(戦闘ではデータを貰って元データが変わらないように)
PlayerDataClass//主人公側(装備データも含む、コマンド選択で行動、それぞれに固有スキル)
EnemyDataClass//敵側(2ターンに1回、HP50%以下等で分岐して行動、複数回行動もアリ)
SkillDataClass//通常攻撃や防御を含むスキルの威力や範囲、付加する効果等を纏めてある。
BattleClass//戦闘するための場。若しくは戦闘を監視する審判。今回のmain.java
戦闘開始の際はBattleClass内で(仮に2vs2の戦闘)
//戦闘に必要なデータのコピー
CharacterClass player_a=new CharacterClass(PlayerDataClass hero)
CharacterClass player_b=new CharacterClass(PlayerDataClass witch)
CharacterClass enemy_a=new CharacterClass(EnemyDataClass bat)
CharacterClass enemy_b=new CharacterClass(EnemyDataClass slime)//データはArraylistで格納して置き、idか名前で呼び出す
としようと考えたのですが、基本的なHP等のステータスは移せますが行動はどのように書いて処理すれば良いかが分かりません。
この後whileループ処理→抜けたら戦闘終了処理(プレイヤーのHPを更新、ドロップ処理など)→フィールドに戻る。という流れです。
現在、設計の案を試行錯誤している段階です。(具体的なコードは無いです)
要点
メソッドは自身が使うべきか、データを扱う人が使うべきかを教えて頂きたいです。
以下に具体例を用意したので、場合による時はこの番号のケースではこっちと教えて頂きたいです。
具体的な質問・不安な点
1.キャラか審判か
1-1.act(SkillDataClass sd,CharacterClass target)メソッドを作り、ダメージ計算を行いたいが、CharacterClassとBattleClassのどちらに書くべきか。(人数が増えた場合、戦闘不能情報なども考慮するとフラグ等もBattleClassが全て管理するべき?その場合引数も追加)
1-2.PlayerClassとEnemyClassはCharacterClassを継承させる必要があるか?その場合actメソッド等無駄にならないか(1-1の答えによってはオーバーライドするべきか)
2.敵の行動は、{条件のID(2ターンに1回、HP50%以下等をID化)と攻撃対象(最もHPが低い等)とスキル}の纏まりを最大10個EnemyClassDataに書き込んで管理したい(敵のデータは別ファイルから入力)が、条件のIDを受け取ってswitch文でtrueorfalse判定を返すメソッドはどこに書けば良いか?呼び出しはBattleClassのwhileループ内。候補:EnemyClass、BattleClass
3.スキル自身かスキル実行者か
3-1.使うとダメージや回復ではない特殊な追加効果が起きる(戦闘不能者の数だけ攻撃アップ)スキルAの場合、その処理はactメソッドの中に書いて置くのが良いのでしょうか?if(sd=skiilA){戦闘不能者の数×10を攻撃力に加算}としてからダメージ計算処理(同じような効果が増えたら特殊効果番号と効果値をSkillDataに加えて関数化?)。もしくはSkillDataにusedメソッドを作り、スキル個別に実行された処理を書くべきなのか?
3-2.主人公側のみの固有スキル(例heroならHP80%以上なら自身が狙われる等)の処理はどこに入れるべきか?固有スキル名だけCharacterClassに移して3-1と同様にすれば良い?
4.(念のため)味方の行動はBattleClassのWhileループ内に選択された行動から条件分岐書いてact等を実行で良いのか?(間違ってなければスルーで)
オブジェクト指向の細かい部分が分からない為よろしくお願いします。長い部分は太字にしました。
回答は出来ればこっちにすると○○な点で不便だから××の方が良いと思う等の理由や意見が欲しいです。
回答1件
あなたの回答
tips
プレビュー