2016-08-10 6 views
0

私はRPGをC#で書いていますが、私は文字クラスをうまく初期化していますが、私は攻撃クラスに苦労しています。ゲームを書く:クラス内の動的攻撃ロジック

各攻撃には、複数の統計情報や最終的にはデコレータに基づいた独自のダメージ計算式が用意されています。

これらのダメージ公式とデコレータを動的に作成/追加する方法はありますか、一般的な攻撃クラスを拡張する攻撃ごとに固有のクラスを作成する必要がありますか?ここで

は、私が後だよ何のためにいくつかの擬似コードです:

public class Attack 
{ 
    public string Name {get; set;} 
    List<Decorators> DamageCalc; 

    public Attack(string[] data, List<Decorators> decorators) 
    { 
     Name = data[DataList.Name]; //I'm using constants to keep my indexes readable 
     DamageCalc = data[DataList.Damage]; //i.e. strength * 10 + agility 
     Decorators = decorators 
     ApplyDecorators(Decorators) 
    } 

    public double DamageCalculation(Character attacker) 
    {    
     return DamageCalc; //attacker.Strength * 10 + attacker.Agility 
    } 

    ... 

} 

柔軟性の新機能と動作を追加するために私には特に重要です。

入力いただきありがとうございます!

編集1 私はJSONを使用する場合は、私のCharacterクラスのSTAT変数にJSONフィールドを関連付けるための任意の簡単な方法があるだろうか、私はそれを相互運用するためのカスタムコードを書く必要があるのですか?

オフハンド私はCharacterクラスから情報を動的に収集できるJSONフィールドまたはそのフィールドを使用するきちんとした方法は考えられません。

編集2 理想的には、これは私が動的にJSONファイル、文字列、XMLファイルまたはデータベーステーブルからデータを取ることによって、単一の攻撃クラスのインスタンスとしてすべての私の攻撃を作成することができます。

DamageCalculationメソッドでコードサンプルを変更しました。

休業 私が選択した回答は、私の特定の問題の解決策を提供します。数式を解析し、私が想定している動的ツールを生成するコードを書く必要があるようです。このように私は設計の観点からこの特定の問題を回避できるかどうかを見ていきます。

+0

のタイトルの下にそれについての詳細を見つけることができます。これにより、外部データソースから設定を簡単に操作できます。 JSONなどのより構造化された形式の使用を検討してください。 –

+0

@Robertありがとうございました。 JSONは、私が働いているものです(私はまだC#をまだ新しくしています)。 JSONフィールドを文字クラスのstat変数に関連付ける簡単な方法はありますか、それとも相互運用するためのカスタムコードを書く必要がありますか? –

答えて

0

計算のシグネチャを含む基本クラスを作成する必要があり、派生クラスでは、その特殊性に基づいて実装されます。

それは固体であり、あなたは大丈夫ですコンストラクタの文字列配列に設定して渡して「Strategy Design Pattern

enter image description here

+0

これは本当に便利ですね、ありがとうございます。 @ RobertMoskalはアルゴリズムを生成するためにデータを使うことを提案しました。 これを行うことができれば、(戦略パターンのように)攻撃ごとにハードコードするのではなく、テーブルから攻撃クラスのインスタンスを動的に作成することができます。 私の控除は正しいのですか、私は戦略パターンを誤解しましたか? –

関連する問題