我正在使用多个级别在C#中制作游戏,并且我尝试制作CreateLevel(int i)
函数。以下是它现在的样子:
void CreateLevel(int i)
{
switch(i) {
case 1: ...
case 2: ...
...
case 300: ...
}
}
因此,当涉及CreatingLevel(n);
时,此函数为O(n),因为它必须遍历所有n个级别才能找到级别n
。有办法制作这个O(1)吗?我相信必须有比这更好的方法,但我无法想到它。
编辑:根据评论,显然switch
方法实际上是 O(1),它不是O(n)。为了这个问题,我会将我的帖子保留为原始格式。
此外,每个级别都是一组在不同位置具有不同颜色的砖块,这些砖块形成图像形状(如伞或树),我将这些信息编码为字符数组,如下所示:
[ r, r, r, g, ' ', b, b]
[ g, g, b, ' ', g, b, b]
[ r, b, b, ' ', b, b, b]
然后我解析这个数组来创建游戏对象,最后用当前级别的信息填充列表,以便在当前级别的持续时间内使用它。
答案 0 :(得分:3)
您可以使用Dictionary<int, Action>
var d = new Dictionary<int, Action>();
d.Add(1, () => Console.WriteLine("level 1"));
d.Add(2, () => Console.WriteLine("level 2"));
然后您可以使用它而不是案例陈述
void CreateLevel(int i)
{
d[i].Invoke();
}