0

我必须创建一个函数来返回角色拥有的咒语。

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

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

到目前为止,我所做的一切都是硬编码的,但是当我必须修改某些东西时,它就变得一团糟了。我不知道哪种数据结构最适合我的需求,而不会反复出现if难以更改/维护的可怕 s。

此外,语言是 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
}
4

2 回答 2

0

我不知道哪种数据结构最适合我的需求,而不会反复出现难以更改/维护的可怕 ifs。

一个简单的普通数组,替代数据库中的一个表。

领域:

  • 拼写 ID
  • 特点
  • 班级
  • 等级
  • 描述 blablabla...

然后按匹配条件过滤。

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

于 2012-12-10T04:25:33.797 回答
0

一个数据库,如果你需要的话。您也许可以使其与IEnumerable/ Arraynow 一起使用,但数据库将为您提供未来游戏所需的灵活性。

于 2012-12-10T08:46:36.007 回答