2013-11-21 51 views
0

我正在创建一个游戏,我想从名称库中为16个不同行星生成一个名称,并将它们分配给一个行星。我为行星创建了一个数组,并为下面的特点生成逻辑。将列表中的项目分配到数组中的项目

Planet[] planetArray = new Planet[16]; 

    public static void NameGeneration() 
    { 
     List<String> planetNames = new List<String>() 
     { 
      "Bak'hur", "Etonia",  "Laurellan", 
      "Ragki",  "Metiope",  "Defel", 
      "Liehne", "Rykhan",  "Heito", 
      "Makha",  "Cerbi",  "Helios", 
      "Luruguan", "Chawnos",  "T'hig", 
      "Blana",  "Pergate V", "Shemon III", 
      "Yokteth", "Letry",  "Last Besgino", 
      "Ayus",  "Alterus",  "Qurenos" 

     }; 

    List<Tuple<int>> instances = new List<Tuple<int>>(); 
    List<string> generatedNames = new List<string>(); 

    Random random = new Random(); 
    int planetName; 


      //generating 16 names 
     while(instances.Count < 16) 
     { 
      planetName = random.Next(0, planetNames.Count); 

      Tuple<int> tuple = new Tuple<int>(planetName); 

      if (instances.Contains(tuple)) 
      { 
       instances.Add(tuple); 
      } 
     } 

     foreach (var tuple in instances) 
     { 
      generatedNames.Add(string.Format("{0}", planetNames[tuple.Item1])); 
     } 

     foreach (var n in generatedNames) 
     { 

     } 


    } 

我真的不知道从哪里何去何从,虽然我已经考虑从列表中选择和手动分配,或者藏汉随机化的星球,但我还是会停留在我的轨道。

任何帮助或提示,将不胜感激。谢谢。

瑞安

+2

为什么'Tuple '而不是'int'? –

+0

尝试在你的方法中从外部声明'new Random'。 – spajce

+0

我使用Tuple ,因为我是编程新手,我的导师建议我使用它。 –

回答

2

我相信这段代码同样的事情 - 创建列表随机挑选16名星球:

var generatedNames = planetNames.OrderBy(n => random.Next()).Take(16).ToList(); 
+0

这是我使用的整个逻辑的简写吗? –

+0

@ Ryan'Maverick'Buxton正好 –

+1

质量,谢谢你队友。 –

0

您可以使用LINQ创建行星,随机之后。例如:

planetArray = generatedNames.Select(x=>new Planet(x)).ToArray(); 

顺便说一句,为什么你使用int的元组列表?您可以直接使用列表。

+0

我使用Tuple ,因为我是编程新手,我的导师建议我使用它。我如何直接从列表中使用它? –

+0

new Planet(x) - 我得到错误'不包含需要1个参数的构造函数。什么是争论? –