保持增量值的最佳数据结构?

时间:2012-12-10 04:12:25

标签: c# data-structures

我必须创建一个返回角色所具有的法术的函数。

所以我有3个参数:一个级别(一个来自1-50的int),一个表示一个字符类的枚举(只有8个类)和一个代表一个种族的枚举(3-4个种族)。

此函数必须返回带有拼写ID的数组。等级越高,角色的法术就越多。

到目前为止,我所做的一切都是硬编码的,但是当我不得不修改它时,它就是一团糟。我不知道哪种数据结构最适合我的需要,而不会再发现难以改变/保留的可怕if

此外,语言是C#,我使用的是Xna / .NET 4.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
}

2 个答案:

答案 0 :(得分:0)

  

我不知道什么样的数据结构最适合我的需求而不会再发生可怕的事情   ifs很难改变/保持。

一个简单的平凡数组,可替代数据库中的表。

字段:

  • 拼写ID
  • 字符
  • 等级
  • 描述blablabla ...

然后通过匹配条件进行过滤。

我建议不要返回数组 - 这是没用的。使方法IEnumerable,然后你可以在需要时使用ToArray()它,或者只是沿着它运行。

答案 1 :(得分:0)

数据库,如果肯定你需要什么。您现在可以使它与IEnumerable / Array一起使用,但数据库将为您提供游戏未来的灵活性。