将列表中的项目分配给数组中的项目

时间:2013-11-21 15:44:35

标签: c# arrays list

我正在创建一个游戏,我想从一组名字中为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 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

你可以使用Linq随机创建行星。类似的东西:

planetArray = generatedNames.Select(x=>new Planet(x)).ToArray();
BTW,为什么要使用int的元组列表?您可以直接使用List。