我正在创建一个游戏,我想从一组名字中为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)
{
}
}
我真的不知道从哪里开始,虽然我已经考虑过从列表中进行选择并手动分配,或随机化行星,但我仍然会陷入困境。
任何帮助或提示将不胜感激。谢谢。
赖安
答案 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。