0

キャラクターが持っている呪文を返す関数を作らなければなりません。

したがって、3つのパラメーターがあります。レベル(1〜50の整数)、キャラクタークラスを表す列挙型(8クラスのみ)、およびレースを表す列挙型(3〜4レース)です。

この関数は、スペルIDを持つ配列を返す必要があります。レベルが高いほど、キャラクターの呪文が多くなります。

これまでに行ったことはすべてをハードコーディングしたものですが、何かを変更する必要がある場合は混乱します。if変更/維持が難しい恐ろしいものを繰り返さずに、どのような種類のデータ構造が自分のニーズに最も適しているのかわかりません。

また、言語はC#で、Xna /.NET4.0を使用しています。

アップデート

public static int[] ListOfSpells(int level, CharacterClass chClass, CharacterRace chRace)
{
    switch (chClass)
    {
        case CharacterClass.Mage:
            return new int[] { 1, 2, 3 };
        case CharacterClass.Knight:
            return new int[] { 2, 5, 6 };
        case CharacterClass.Paladin:
            return new int[] { 3, 5, 6, 2 };
        default:
            return new int[] { };
    }
}
 
// classes
 
public enum CharacterClass : short
{
    Mage = 0x00,
    Warlock,
    Priest,
 
    Monk,
    Knight,
    Assassin,
 
    Paladin,
    Hunter,
    Warrior
}
 
// races
 
public enum CharacterRace : short
{
    Human = 0x00,
    Elf
}
4

2 に答える 2

0

A database if definitly what you need. You can maybe make it works with IEnumerable/Array now, but database will gave you the flexibility that you want for the future of your game.

于 2012-12-10T08:46:36.007 に答える
0

変更/維持が困難な恐ろしいifを繰り返さずに、どのようなデータ構造が自分のニーズに最も適しているかわかりません。

単純な自明な配列であり、データベース内のテーブルを代替します。

田畑:

  • スペルID
  • キャラクター
  • クラス
  • レベル
  • 説明 ブラブラブラ...

次に、一致条件でフィルタリングします。

そして、配列を返さないことをお勧めします-それは役に立ちません。メソッドを IEnumerable にしてから、必要に応じて ToArray() を実行するか、それに沿って実行します。

于 2012-12-10T04:25:33.797 に答える