2013-11-21 4 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

попытайтесь объявить «новый случайный» извне в вашем методе. – 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(); 

BTW, Почему вы используете List of Tuple of int ?. Вы можете использовать List непосредственно.

+0

Я использовал Tuple , потому что я новичок в программировании, и мой преподаватель предложил использовать его. Как использовать его непосредственно из списка? –

+0

new Planet (x) - я получаю ошибку 'не содержит конструктор, который принимает 1 аргумент. Что такое аргумент? –

Смежные вопросы