C# 保存增量值的最佳数据结构?
我必须创建一个函数,返回角色的拼写 所以我有3个参数:一个级别(1-50的整数)、一个表示字符类的枚举(只有8个类)和一个表示种族的枚举(3-4个种族) 此函数必须返回带有拼写ID的数组。等级越高,角色的法术越多 到目前为止,我所做的一切都是硬编码的,但当我不得不修改某些东西时,一切都一团糟。我不知道什么样的数据结构最适合我的需要,而不会重复使用难以更改的可怕的C# 保存增量值的最佳数据结构?,c#,data-structures,C#,Data Structures,我必须创建一个函数,返回角色的拼写 所以我有3个参数:一个级别(1-50的整数)、一个表示字符类的枚举(只有8个类)和一个表示种族的枚举(3-4个种族) 此函数必须返回带有拼写ID的数组。等级越高,角色的法术越多 到目前为止,我所做的一切都是硬编码的,但当我不得不修改某些东西时,一切都一团糟。我不知道什么样的数据结构最适合我的需要,而不会重复使用难以更改的可怕的ifs/mantain 另外,语言是C#,我使用的是Xna/.net4.0 更新 我不知道什么样的数据结构最适合我的需要,而不会重复出现
if
s/mantain
另外,语言是C#,我使用的是Xna/.net4.0
更新
我不知道什么样的数据结构最适合我的需要,而不会重复出现可怕的问题
如果很难改变/保持
一个简单的平凡数组,在数据库中替代一个表
字段:
- 拼写ID
- 性格
- 阶级
- 水平仪
- 描述布拉布拉布拉布拉
我建议不要返回数组,这是没有用的。将该方法设为IEnumerable,然后您可以根据需要排列它,或者直接运行它。如果您确实需要,则可以创建数据库。现在,您可以使用
IEnumerable
/数组
,但数据库将为您提供未来游戏所需的灵活性。您可以提供任何示例吗?这就是我目前为止所做的:在不考虑角色级别的情况下,如果作为参数传递的级别更高,角色将有更多的拼写,你可以从IEnumerable
返回方法中返回数据,这是一个经常被忽略的特性。我所说的“make the method IEnumerable”就是这个意思,你只需要在实际需要时创建一个数组,通常你可能不需要。
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
}