-1

I've been looking online for a straight forward answer on this and all of the examples I've tried have not worked for me. I need to randomly select an element from a List and then assign two of the fields to two separate Text components and then assign the third string to a variable that I'll use to modify a filename (for a screenshot of the animal type that are in my List). Here's what I have so far, but I've got the random part wrong, I'm getting the error "error CS0119: Expression denotes a type', where avariable', value' ormethod group' was expected". How do I fix that?

AnimalDescription.cs

public string name;
public string description;
public string screenshotPrefix;

// Constructor to allocate string values
public AnimalDescription(string newName, string newDescription, string newScreenshotPrefix)
{
    name = newName;
    description = newDescription;
    screenshotPrefix = newScreenshotPrefix;
}

GameSetup.cs

void Start()
{
    List<AnimalDescription> animalDescriptions = new List<AnimalDescription>();

    animalDescriptions.Add(new AnimalDescription(
        // animal name
        "Of the Bear-Ape ARCTOPITHECUS.",
        // animal description
        "There is in America a very deformed beast which the inhabitants call Haut or Hauti, and the Frenchmen, Guenon, " +
        "as big as a great African Munkey. His belly hangeth very low, his head and face like unto a childs, as may be seen by " +
        "this lively picture, and being taken it will fight like a young child. His skin is of an ash-colour, and hairy like a Bear; " +
        "he hath but three claws on a foot, as long as four fingers, and like the thornes of Privet, where-by he climeth up into the " +
        "highest trees, and for the most part liveth of the leaves of a certain tree being of an exceeding height, which the Americans " +
        "call Amahut, and thereof this beast is called Haut. Their tail is about three fingers long, having very little hair there-on; " +
        "I observed, that although it often rained, yet was that beast never wet.",
        // screenshot prefix
        "ARCTOPITHECUS_"
        ));
    animalDescriptions.Add(new AnimalDescription(
        // animal name
        "Of the SIMIVULPA, or Apifb-Fox.",
        // animal description
        "…they have seen a four-footed beast, the forepart like a Fox, and in the hinder part like an Ape, except that it had a mans " +
        "feet, and ears like a Bat, and underneath the common belly, there was a skin like a bag or scrip, where-in she keepeth, lodgeth, " +
        "and carryeth her young ones, until they are able to provide for themselves, without the help of their dam; neither do they come " +
        "forth of that receptacle, except it be to suck milk, or sport themselves, so that the same under-belly is her best remedy against " +
        "the furious Hunters, and other ravening beasts, to preserve her young ones, for she is incredibly swift, running with that carriage " +
        "as if she has no burden. It hath a tail like a Munkey…",
        // screenshot prefix
        "SIMIVULPA_"
        ));
    animalDescriptions.Add(new AnimalDescription(
        // animal name
        "The SCYTHIAN WOLF.",
        // animal description
        "…they have seen a four-footed beast, the forepart like a Fox, and in the hinder part like an Ape, except that it had a mans " +
        "feet, and ears like a Bat, and underneath the common belly, there was a skin like a bag or scrip, where-in she keepeth, lodgeth, " +
        "and carryeth her young ones, until they are able to provide for themselves, without the help of their dam; neither do they come " +
        "forth of that receptacle, except it be to suck milk, or sport themselves, so that the same under-belly is her best remedy against " +
        "the furious Hunters, and other ravening beasts, to preserve her young ones, for she is incredibly swift, running with that carriage " +
        "as if she has no burden. It hath a tail like a Munkey…",
        // screenshot prefix
        "SCYTHIAN_WOLF_"
        ));
    animalDescriptions.Add(new AnimalDescription(
        // animal name
        "Of the TATUS, or Guinean Beast.",
        // animal description
        "This is a four-footed strange Beast, it is naturally covered with a hard shell, divided and interlined like the fins of fishes, " +
        "outwardly seeming buckled to the back like Coat-armor, within which the beast draweth up his body, as a Hedge-hog doth within his " +
        "prickled skin; and therefore I take it to be a Brasilian Hedge-hog. It is not much greater than a little Pig, and by the snout, ears, " +
        "legs, and feet thereof, it seemeth to be of that kind, saving that the snout is a little broader, and shorter than a Pigs, and the " +
        "tail very long like a Lizards or Rats, and one of these being brought into France, did live upon the eating of seeds, and fruits of " +
        "the Gardens, but it appeareth by that picture, or rather the stuffed, which Adriausus Mercellus the Apothecary…that the feet thereof " +
        "are not cloven into two parts like Swine, but rather into many like Dogs, for upon the hinderfeet there are five toes, and upon the " +
        "fore feet four, whereof two are so small that they are scarce visible. The breadth of that same skin was about seven fingers, and the " +
        "length of it two spans, the shell or crust upon the back of it did not reach down unto the rump or tail, but broke off as it were upon " +
        "the hips, some four fingers from the tail.",
        // screenshot prefix
        "TATUS_"
        ));
    animalDescriptions.Add(new AnimalDescription(
        // animal name
        "Of the GULON",
        // animal description
        "This Beast was not known by the Ancients, but hath been since discovered in the Northern parts of the World, and because of the " +
        "voracity thereof, it is called  (Gula)…is thought to be engendered by a Hyena and a Lioness, for the quality it resembleth a Hiena, " +
        "and it is the same which is called (Crocuta;) it is a devouring and an unprofitable creature, having sharper teeth than other creatures. " +
        "Some think it is derived of a Wolf and a Dog, for it is about the bigness of a Dog; it hath the face of Cat, the body and tail of a Fox; " +
        "being black of colour; his feet and nails be most sharp, his skin rusty, the hair very sharp, and it feedeth upon dead carkases. When it " +
        "hath found a dead carcass he eateth thereof so violently, that his belly standeth out like a bell; then he seeketh for some narrow passage " +
        "betwixt two trees, and there draweth through his body, by pressing whereof, he driveth out the meat which he had eaten; and being so emptied " +
        "returneth and devoureth as much as he did before, and goeth again and emptieth himself as in former manner; and so continueth eating and " +
        "emptying till all be eaten.",
        // screenshot prefix
        "GULON_"
        ));
    animalDescriptions.Add(new AnimalDescription(
        // animal name
        "Of the SUCCORATH",
        // animal description
        "…it is of a very deformed shape, and monstrous presence, a great ravener and untamable wilde Beast. When the Hunters that desire her " +
        "skin set upon her, she flyeth very swift, carrying her young ones upon her back, and covering them with her broad tail: Hunters dig " +
        "several pits or great holes in the earth, which they cover with boughs, sticks, and earth, so weakly that if the Beast chance at any " +
        "time to come upon it, she and her young ones fall down into the pit and are taken. This cruel, untamable, impatient, violent, ravening, " +
        "and bloudy beast, perceiving that her natural strength cannot deliver her from the wit and policy of men her hunters, (for being inclosed " +
        "she can never get out again.)…she destroyeth them all with her own teeth; for there was never any of them taken alive…And this is all I " +
        "finde recorded of this most savage Beast.",
        // screenshot prefix
        "SUCCORATH_"
        ));

    RandomizeAnimals();
}

void RandomizeAnimals()
{
    System.Random rand = new System.Random();
    AnimalDescription myElement = AnimalDescription[rand.Next(AnimalDescription.Count)];

}
greyBow
  • 1,298
  • 3
  • 28
  • 62
  • 1
    So you've found `System.Random` - have you tried to use it in any way? – John3136 Jul 22 '15 at 03:28
  • there is something similar in the link below already...may be that can help you in using the random stuff..check this http://stackoverflow.com/questions/16333861/how-to-select-a-random-element-from-listaction?rq=1 – Megha Jul 22 '15 at 03:41

3 Answers3

2

If you want to save startup data in xml try this

​using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Xml;
using System.Xml.Serialization;

namespace ConsoleApplication1
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            AnimalDescriptions animalDescriptions = new AnimalDescriptions();
            animalDescriptions.Start();
            animalDescriptions.Serialize(FILENAME);
            AnimalDescriptions newAnimalDescriptions = animalDescriptions.DeSerialize(FILENAME);

        }
    }
    [XmlRoot("animalDescriptions")]
    public class AnimalDescriptions
    {
        [XmlElement("animalDescription")]
        public List<AnimalDescription> animalDescriptions { get; set; }

        public void Start()
        {
            animalDescriptions = new List<AnimalDescription>() {
                new AnimalDescription() {
                    name = "Of the Bear-Ape ARCTOPITHECUS.",
                    description = "There is in America a very deformed beast which the inhabitants call Haut or Hauti, and the Frenchmen, Guenon, " +
                    "as big as a great African Munkey. His belly hangeth very low, his head and face like unto a childs, as may be seen by " +
                    "this lively picture, and being taken it will fight like a young child. His skin is of an ash-colour, and hairy like a Bear; " +
                    "he hath but three claws on a foot, as long as four fingers, and like the thornes of Privet, where-by he climeth up into the " +
                    "highest trees, and for the most part liveth of the leaves of a certain tree being of an exceeding height, which the Americans " +
                    "call Amahut, and thereof this beast is called Haut. Their tail is about three fingers long, having very little hair there-on; " +
                    "I observed, that although it often rained, yet was that beast never wet.",
                    screenshotPrefix = "ARCTOPITHECUS_"
                },
                new AnimalDescription() {
                    name = "Of the SIMIVULPA, or Apifb-Fox.",
                    description = "…they have seen a four-footed beast, the forepart like a Fox, and in the hinder part like an Ape, except that it had a mans " +
                    "feet, and ears like a Bat, and underneath the common belly, there was a skin like a bag or scrip, where-in she keepeth, lodgeth, " +
                    "and carryeth her young ones, until they are able to provide for themselves, without the help of their dam; neither do they come " +
                    "forth of that receptacle, except it be to suck milk, or sport themselves, so that the same under-belly is her best remedy against " +
                    "the furious Hunters, and other ravening beasts, to preserve her young ones, for she is incredibly swift, running with that carriage " +
                    "as if she has no burden. It hath a tail like a Munkey…",
                    screenshotPrefix = "SIMIVULPA_"
                },
                new AnimalDescription() {
                    name = "The SCYTHIAN WOLF.",
                    description = "…they have seen a four-footed beast, the forepart like a Fox, and in the hinder part like an Ape, except that it had a mans " +
                    "feet, and ears like a Bat, and underneath the common belly, there was a skin like a bag or scrip, where-in she keepeth, lodgeth, " +
                    "and carryeth her young ones, until they are able to provide for themselves, without the help of their dam; neither do they come " +
                    "forth of that receptacle, except it be to suck milk, or sport themselves, so that the same under-belly is her best remedy against " +
                    "the furious Hunters, and other ravening beasts, to preserve her young ones, for she is incredibly swift, running with that carriage " +
                    "as if she has no burden. It hath a tail like a Munkey…",
                    screenshotPrefix = "SCYTHIAN_WOLF_"
                },
                new AnimalDescription() {
                    name = "Of the TATUS, or Guinean Beast.",
                    description = "This is a four-footed strange Beast, it is naturally covered with a hard shell, divided and interlined like the fins of fishes, " +
                    "outwardly seeming buckled to the back like Coat-armor, within which the beast draweth up his body, as a Hedge-hog doth within his " +
                    "prickled skin; and therefore I take it to be a Brasilian Hedge-hog. It is not much greater than a little Pig, and by the snout, ears, " +
                    "legs, and feet thereof, it seemeth to be of that kind, saving that the snout is a little broader, and shorter than a Pigs, and the " +
                    "tail very long like a Lizards or Rats, and one of these being brought into France, did live upon the eating of seeds, and fruits of " +
                    "the Gardens, but it appeareth by that picture, or rather the stuffed, which Adriausus Mercellus the Apothecary…that the feet thereof " +
                    "are not cloven into two parts like Swine, but rather into many like Dogs, for upon the hinderfeet there are five toes, and upon the " +
                    "fore feet four, whereof two are so small that they are scarce visible. The breadth of that same skin was about seven fingers, and the " +
                    "length of it two spans, the shell or crust upon the back of it did not reach down unto the rump or tail, but broke off as it were upon " +
                    "the hips, some four fingers from the tail.",
                    screenshotPrefix = "TATUS_"
                },
                new AnimalDescription() {
                    name = "Of the GULON",
                    description = "This Beast was not known by the Ancients, but hath been since discovered in the Northern parts of the World, and because of the " +
                    "voracity thereof, it is called  (Gula)…is thought to be engendered by a Hyena and a Lioness, for the quality it resembleth a Hiena, " +
                    "and it is the same which is called (Crocuta;) it is a devouring and an unprofitable creature, having sharper teeth than other creatures. " +
                    "Some think it is derived of a Wolf and a Dog, for it is about the bigness of a Dog; it hath the face of Cat, the body and tail of a Fox; " +
                    "being black of colour; his feet and nails be most sharp, his skin rusty, the hair very sharp, and it feedeth upon dead carkases. When it " +
                    "hath found a dead carcass he eateth thereof so violently, that his belly standeth out like a bell; then he seeketh for some narrow passage " +
                    "betwixt two trees, and there draweth through his body, by pressing whereof, he driveth out the meat which he had eaten; and being so emptied " +
                    "returneth and devoureth as much as he did before, and goeth again and emptieth himself as in former manner; and so continueth eating and " +
                    "emptying till all be eaten.",
                    screenshotPrefix = "GULON_"
                },
                new AnimalDescription() {
                    name = "Of the SUCCORATH",
                    description = "…it is of a very deformed shape, and monstrous presence, a great ravener and untamable wilde Beast. When the Hunters that desire her " +
                    "skin set upon her, she flyeth very swift, carrying her young ones upon her back, and covering them with her broad tail: Hunters dig " +
                    "several pits or great holes in the earth, which they cover with boughs, sticks, and earth, so weakly that if the Beast chance at any " +
                    "time to come upon it, she and her young ones fall down into the pit and are taken. This cruel, untamable, impatient, violent, ravening, " +
                    "and bloudy beast, perceiving that her natural strength cannot deliver her from the wit and policy of men her hunters, (for being inclosed " +
                    "she can never get out again.)…she destroyeth them all with her own teeth; for there was never any of them taken alive…And this is all I " +
                    "finde recorded of this most savage Beast.",
                    screenshotPrefix = "SUCCORATH_"
                }
            };

            RandomizeAnimals();
        }
        public void Serialize(string filename)
        {
            XmlSerializer serializer = new XmlSerializer(typeof(AnimalDescriptions));

            StreamWriter writer = new StreamWriter(filename);
            serializer.Serialize(writer, this);
            writer.Flush();
            writer.Close();
            writer.Dispose();
        }
        public AnimalDescriptions DeSerialize(string filename)
        {
            XmlSerializer xs = new XmlSerializer(typeof(AnimalDescriptions));
            XmlTextReader reader = new XmlTextReader(filename);
            AnimalDescriptions animalDescriptions = (AnimalDescriptions)xs.Deserialize(reader);
            animalDescriptions.RandomizeAnimals();
            return animalDescriptions;
        }

        void RandomizeAnimals()
        {
            System.Random rand = new System.Random();
            foreach (AnimalDescription animalDescription in animalDescriptions)
            {
                animalDescription.randomNumber = rand.Next();
            }

            animalDescriptions.Sort((firstObj, secondObj) =>
            {
                return firstObj.randomNumber.CompareTo(secondObj.randomNumber);
            });

            //or
            //animalDescriptions = animalDescriptions.OrderBy(x => x.randomNumber).ToList();

        }

    }
    [XmlRoot("animalDescription")]
    public class AnimalDescription
    {
        [XmlAttribute("name")]
        public string name { get; set; }
        [XmlAttribute("description")]
        public string description { get; set; }
        [XmlAttribute("screenshotPrefix")]
        public string screenshotPrefix { get; set; }
        [XmlIgnore]
        public int randomNumber;

    }
}
jdweng
  • 33,250
  • 2
  • 15
  • 20
1

Try this. Complete solution. I have two different solutions with slight differences in the Start() mnethod.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            AnimalDescription animalDescription = new AnimalDescription();
            animalDescription.Start();
        }
    }
    public class AnimalDescription
    {
        public string name { get; set; }
        public string description { get; set; }
        public string screenshotPrefix { get; set; }
        private int randomNumber;
        static List<AnimalDescription> animalDescriptions = new List<AnimalDescription>();


        public void Start()
        {

            animalDescriptions.Add(new AnimalDescription() {

                name = "Of the Bear-Ape ARCTOPITHECUS.",
                description = "There is in America a very deformed beast which the inhabitants call Haut or Hauti, and the Frenchmen, Guenon, " +
                "as big as a great African Munkey. His belly hangeth very low, his head and face like unto a childs, as may be seen by " +
                "this lively picture, and being taken it will fight like a young child. His skin is of an ash-colour, and hairy like a Bear; " +
                "he hath but three claws on a foot, as long as four fingers, and like the thornes of Privet, where-by he climeth up into the " +
                "highest trees, and for the most part liveth of the leaves of a certain tree being of an exceeding height, which the Americans " +
                "call Amahut, and thereof this beast is called Haut. Their tail is about three fingers long, having very little hair there-on; " +
                "I observed, that although it often rained, yet was that beast never wet.",
                screenshotPrefix = "ARCTOPITHECUS_"
            });
            animalDescriptions.Add(new AnimalDescription(){
                name = "Of the SIMIVULPA, or Apifb-Fox.",
                description = "…they have seen a four-footed beast, the forepart like a Fox, and in the hinder part like an Ape, except that it had a mans " +
                "feet, and ears like a Bat, and underneath the common belly, there was a skin like a bag or scrip, where-in she keepeth, lodgeth, " +
                "and carryeth her young ones, until they are able to provide for themselves, without the help of their dam; neither do they come " +
                "forth of that receptacle, except it be to suck milk, or sport themselves, so that the same under-belly is her best remedy against " +
                "the furious Hunters, and other ravening beasts, to preserve her young ones, for she is incredibly swift, running with that carriage " +
                "as if she has no burden. It hath a tail like a Munkey…",
                screenshotPrefix = "SIMIVULPA_"
            });
            animalDescriptions.Add(new AnimalDescription() {
                name = "The SCYTHIAN WOLF.",
                description = "…they have seen a four-footed beast, the forepart like a Fox, and in the hinder part like an Ape, except that it had a mans " +
                "feet, and ears like a Bat, and underneath the common belly, there was a skin like a bag or scrip, where-in she keepeth, lodgeth, " +
                "and carryeth her young ones, until they are able to provide for themselves, without the help of their dam; neither do they come " +
                "forth of that receptacle, except it be to suck milk, or sport themselves, so that the same under-belly is her best remedy against " +
                "the furious Hunters, and other ravening beasts, to preserve her young ones, for she is incredibly swift, running with that carriage " +
                "as if she has no burden. It hath a tail like a Munkey…",
                screenshotPrefix = "SCYTHIAN_WOLF_"
            });
            animalDescriptions.Add(new AnimalDescription() {
                name = "Of the TATUS, or Guinean Beast.",
                description = "This is a four-footed strange Beast, it is naturally covered with a hard shell, divided and interlined like the fins of fishes, " +
                "outwardly seeming buckled to the back like Coat-armor, within which the beast draweth up his body, as a Hedge-hog doth within his " +
                "prickled skin; and therefore I take it to be a Brasilian Hedge-hog. It is not much greater than a little Pig, and by the snout, ears, " +
                "legs, and feet thereof, it seemeth to be of that kind, saving that the snout is a little broader, and shorter than a Pigs, and the " +
                "tail very long like a Lizards or Rats, and one of these being brought into France, did live upon the eating of seeds, and fruits of " +
                "the Gardens, but it appeareth by that picture, or rather the stuffed, which Adriausus Mercellus the Apothecary…that the feet thereof " +
                "are not cloven into two parts like Swine, but rather into many like Dogs, for upon the hinderfeet there are five toes, and upon the " +
                "fore feet four, whereof two are so small that they are scarce visible. The breadth of that same skin was about seven fingers, and the " +
                "length of it two spans, the shell or crust upon the back of it did not reach down unto the rump or tail, but broke off as it were upon " +
                "the hips, some four fingers from the tail.",
                screenshotPrefix = "TATUS_"
            });
            animalDescriptions.Add(new AnimalDescription() {
                name = "Of the GULON",
                description = "This Beast was not known by the Ancients, but hath been since discovered in the Northern parts of the World, and because of the " +
                "voracity thereof, it is called  (Gula)…is thought to be engendered by a Hyena and a Lioness, for the quality it resembleth a Hiena, " +
                "and it is the same which is called (Crocuta;) it is a devouring and an unprofitable creature, having sharper teeth than other creatures. " +
                "Some think it is derived of a Wolf and a Dog, for it is about the bigness of a Dog; it hath the face of Cat, the body and tail of a Fox; " +
                "being black of colour; his feet and nails be most sharp, his skin rusty, the hair very sharp, and it feedeth upon dead carkases. When it " +
                "hath found a dead carcass he eateth thereof so violently, that his belly standeth out like a bell; then he seeketh for some narrow passage " +
                "betwixt two trees, and there draweth through his body, by pressing whereof, he driveth out the meat which he had eaten; and being so emptied " +
                "returneth and devoureth as much as he did before, and goeth again and emptieth himself as in former manner; and so continueth eating and " +
                "emptying till all be eaten.",
                screenshotPrefix = "GULON_"
            });
            animalDescriptions.Add(new AnimalDescription() {
                name = "Of the SUCCORATH",
                description = "…it is of a very deformed shape, and monstrous presence, a great ravener and untamable wilde Beast. When the Hunters that desire her " +
                "skin set upon her, she flyeth very swift, carrying her young ones upon her back, and covering them with her broad tail: Hunters dig " +
                "several pits or great holes in the earth, which they cover with boughs, sticks, and earth, so weakly that if the Beast chance at any " +
                "time to come upon it, she and her young ones fall down into the pit and are taken. This cruel, untamable, impatient, violent, ravening, " +
                "and bloudy beast, perceiving that her natural strength cannot deliver her from the wit and policy of men her hunters, (for being inclosed " +
                "she can never get out again.)…she destroyeth them all with her own teeth; for there was never any of them taken alive…And this is all I " +
                "finde recorded of this most savage Beast.",
                screenshotPrefix = "SUCCORATH_"
            });

            RandomizeAnimals();
        }

        void RandomizeAnimals()
        {
            System.Random rand = new System.Random();
            foreach (AnimalDescription animalDescription in animalDescriptions)
            {
                animalDescription.randomNumber = rand.Next();
            }

            animalDescriptions.Sort((firstObj, secondObj) =>
            {
                return firstObj.randomNumber.CompareTo(secondObj.randomNumber);
            });

            //or
            //animalDescriptions = animalDescriptions.OrderBy(x => x.randomNumber).ToList();

        }


    }
}
​

Eliminated the Add() methods in start

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            AnimalDescription animalDescription = new AnimalDescription();
            animalDescription.Start();
        }
    }
    public class AnimalDescription
    {
        public string name { get; set; }
        public string description { get; set; }
        public string screenshotPrefix { get; set; }
        private int randomNumber;
        static List<AnimalDescription> animalDescriptions = new List<AnimalDescription>();


        public void Start()
        {
            animalDescriptions = new List<AnimalDescription>() {
                new AnimalDescription() {
                    name = "Of the Bear-Ape ARCTOPITHECUS.",
                    description = "There is in America a very deformed beast which the inhabitants call Haut or Hauti, and the Frenchmen, Guenon, " +
                    "as big as a great African Munkey. His belly hangeth very low, his head and face like unto a childs, as may be seen by " +
                    "this lively picture, and being taken it will fight like a young child. His skin is of an ash-colour, and hairy like a Bear; " +
                    "he hath but three claws on a foot, as long as four fingers, and like the thornes of Privet, where-by he climeth up into the " +
                    "highest trees, and for the most part liveth of the leaves of a certain tree being of an exceeding height, which the Americans " +
                    "call Amahut, and thereof this beast is called Haut. Their tail is about three fingers long, having very little hair there-on; " +
                    "I observed, that although it often rained, yet was that beast never wet.",
                    screenshotPrefix = "ARCTOPITHECUS_"
                },
                new AnimalDescription() {
                    name = "Of the SIMIVULPA, or Apifb-Fox.",
                    description = "…they have seen a four-footed beast, the forepart like a Fox, and in the hinder part like an Ape, except that it had a mans " +
                    "feet, and ears like a Bat, and underneath the common belly, there was a skin like a bag or scrip, where-in she keepeth, lodgeth, " +
                    "and carryeth her young ones, until they are able to provide for themselves, without the help of their dam; neither do they come " +
                    "forth of that receptacle, except it be to suck milk, or sport themselves, so that the same under-belly is her best remedy against " +
                    "the furious Hunters, and other ravening beasts, to preserve her young ones, for she is incredibly swift, running with that carriage " +
                    "as if she has no burden. It hath a tail like a Munkey…",
                    screenshotPrefix = "SIMIVULPA_"
                },
                new AnimalDescription() {
                    name = "The SCYTHIAN WOLF.",
                    description = "…they have seen a four-footed beast, the forepart like a Fox, and in the hinder part like an Ape, except that it had a mans " +
                    "feet, and ears like a Bat, and underneath the common belly, there was a skin like a bag or scrip, where-in she keepeth, lodgeth, " +
                    "and carryeth her young ones, until they are able to provide for themselves, without the help of their dam; neither do they come " +
                    "forth of that receptacle, except it be to suck milk, or sport themselves, so that the same under-belly is her best remedy against " +
                    "the furious Hunters, and other ravening beasts, to preserve her young ones, for she is incredibly swift, running with that carriage " +
                    "as if she has no burden. It hath a tail like a Munkey…",
                    screenshotPrefix = "SCYTHIAN_WOLF_"
                },
                new AnimalDescription() {
                    name = "Of the TATUS, or Guinean Beast.",
                    description = "This is a four-footed strange Beast, it is naturally covered with a hard shell, divided and interlined like the fins of fishes, " +
                    "outwardly seeming buckled to the back like Coat-armor, within which the beast draweth up his body, as a Hedge-hog doth within his " +
                    "prickled skin; and therefore I take it to be a Brasilian Hedge-hog. It is not much greater than a little Pig, and by the snout, ears, " +
                    "legs, and feet thereof, it seemeth to be of that kind, saving that the snout is a little broader, and shorter than a Pigs, and the " +
                    "tail very long like a Lizards or Rats, and one of these being brought into France, did live upon the eating of seeds, and fruits of " +
                    "the Gardens, but it appeareth by that picture, or rather the stuffed, which Adriausus Mercellus the Apothecary…that the feet thereof " +
                    "are not cloven into two parts like Swine, but rather into many like Dogs, for upon the hinderfeet there are five toes, and upon the " +
                    "fore feet four, whereof two are so small that they are scarce visible. The breadth of that same skin was about seven fingers, and the " +
                    "length of it two spans, the shell or crust upon the back of it did not reach down unto the rump or tail, but broke off as it were upon " +
                    "the hips, some four fingers from the tail.",
                    screenshotPrefix = "TATUS_"
                },
                new AnimalDescription() {
                    name = "Of the GULON",
                    description = "This Beast was not known by the Ancients, but hath been since discovered in the Northern parts of the World, and because of the " +
                    "voracity thereof, it is called  (Gula)…is thought to be engendered by a Hyena and a Lioness, for the quality it resembleth a Hiena, " +
                    "and it is the same which is called (Crocuta;) it is a devouring and an unprofitable creature, having sharper teeth than other creatures. " +
                    "Some think it is derived of a Wolf and a Dog, for it is about the bigness of a Dog; it hath the face of Cat, the body and tail of a Fox; " +
                    "being black of colour; his feet and nails be most sharp, his skin rusty, the hair very sharp, and it feedeth upon dead carkases. When it " +
                    "hath found a dead carcass he eateth thereof so violently, that his belly standeth out like a bell; then he seeketh for some narrow passage " +
                    "betwixt two trees, and there draweth through his body, by pressing whereof, he driveth out the meat which he had eaten; and being so emptied " +
                    "returneth and devoureth as much as he did before, and goeth again and emptieth himself as in former manner; and so continueth eating and " +
                    "emptying till all be eaten.",
                    screenshotPrefix = "GULON_"
                },
                new AnimalDescription() {
                    name = "Of the SUCCORATH",
                    description = "…it is of a very deformed shape, and monstrous presence, a great ravener and untamable wilde Beast. When the Hunters that desire her " +
                    "skin set upon her, she flyeth very swift, carrying her young ones upon her back, and covering them with her broad tail: Hunters dig " +
                    "several pits or great holes in the earth, which they cover with boughs, sticks, and earth, so weakly that if the Beast chance at any " +
                    "time to come upon it, she and her young ones fall down into the pit and are taken. This cruel, untamable, impatient, violent, ravening, " +
                    "and bloudy beast, perceiving that her natural strength cannot deliver her from the wit and policy of men her hunters, (for being inclosed " +
                    "she can never get out again.)…she destroyeth them all with her own teeth; for there was never any of them taken alive…And this is all I " +
                    "finde recorded of this most savage Beast.",
                    screenshotPrefix = "SUCCORATH_"
                }
            };

            RandomizeAnimals();
        }

        void RandomizeAnimals()
        {
            System.Random rand = new System.Random();
            foreach (AnimalDescription animalDescription in animalDescriptions)
            {
                animalDescription.randomNumber = rand.Next();
            }

            animalDescriptions.Sort((firstObj, secondObj) =>
            {
                return firstObj.randomNumber.CompareTo(secondObj.randomNumber);
            });

            //or
            //animalDescriptions = animalDescriptions.OrderBy(x => x.randomNumber).ToList();

        }


    }
}
​
jdweng
  • 33,250
  • 2
  • 15
  • 20
  • Thanks for this! I'm having a problem with it though - When I drag the script onto a GameObject I get the error: Can't add script behaviour AnimalDescription. The script needs to derive from MonoBehaviour! How can I fix this? – greyBow Jul 22 '15 at 04:37
  • Not a Java expert. Modified code to make List<> static. – jdweng Jul 22 '15 at 05:02
  • I made properties {get; set;}. Then changed your comments "name", "description", "screenshotPrefix" to the property names. Removed constructors – jdweng Jul 22 '15 at 05:21
  • Thanks for all of this! Do you have a moment to explain what's going on in the RandomizeAnimals function? I'm just getting into things and I'm curious to know how everything works. How can I access and debug to see which element in the List is currently selected and print out each field in the element (so that I may later assign these fields to text components)? In other words in the game I'm developing I want to select only one of the animal descriptions at a time (per game). – greyBow Jul 22 '15 at 13:52
  • Could you tell me what the significance is of the empty method: public AnimalDescription() { }? How does that work in the grand scheme of things? And how do I run this script? I've not worked with namespaces before. I tried to put: void Start () { ConsoleApplication1.Program(); } in another script run the script but it's giving the error: error CS0119: Expression denotes a `type', where a `variable', `value' or `method group' was expected. How can I fix this? – greyBow Jul 22 '15 at 14:09
  • Easiest way of printing the current selection is to use the serialize method where I write to XML. It is in the answer I posted after this one. After randomizing the results you can use the animalDescriptions[0] as the selected animal which will change everytime you randomize the class. – jdweng Jul 22 '15 at 15:28
  • The constructor for the class (new AnimalDescription) is called in two different places in the code. First in main() where an new instance of the class is created. No parameter is required in the code. The 2nd place in the code where "new animalDescriptions" is used is when you are adding a new animal to the class which requires 3 parameters. – jdweng Jul 22 '15 at 15:32
  • I think you are getting the error because you are in a different module (not script). You fix the error by just changing the namespace in either module to be the same. The only restriction in changing namespace is the project contains the startup namespace so you don't want to change the name of the startup namespace. The other solution is simply use the namespace in the call like ConsoleApplication1.AnimalDescription animalDescription = new ConsoleApplication1.AnimalDescription(); – jdweng Jul 22 '15 at 15:38
  • I'm sorry that this is simply escaping me, I'm just not that advanced yet to understand some of these concepts. I'm trying the code you posted below to save the randomly selected list element to an XML file, but when I press play and then check in the directory the xml file is not there. I guess it goes back to my original question of how do I call the methods in the Program.cs at runtime? Could you show me what the code would be? Would I call it from another class' Start function? – greyBow Jul 22 '15 at 16:32
  • If you are a starter, I would put all code into one module (one .cs file). Working with multiple modules is a little complicated. It is hard to determine the issue since you only posted a portion of your code. You are not getting any compiler error which indicates the code just isn't getting to my code. I would start by putting some break point into the code to determine how far the code is executing. Simply click on a line of code and press F9. Then run code and see if you get to the break point. You can also use F11 to step through the code. – jdweng Jul 22 '15 at 23:53
1

I would have added a comment for this but I don't have reputation to than so I have modified the code (by jdweng) here is it.

using UnityEngine;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program  : MonoBehaviour
    {
        static void Main(string[] args)
        {
            AnimalDescription animalDescription = new AnimalDescription();
            animalDescription.Start();
        }
    }
    public class AnimalDescription
    {
        public string name;
        public string description;
        public string screenshotPrefix;
        private int randomNumber;
        List<AnimalDescription> animalDescriptions = new List<AnimalDescription>();

        public AnimalDescription()
        {
        }
        // Constructor to allocate string values
        public AnimalDescription(string newName, string newDescription, string newScreenshotPrefix)
        {
            name = newName;
            description = newDescription;
            screenshotPrefix = newScreenshotPrefix;
        }

        public void Start()
        {

            animalDescriptions.Add(new AnimalDescription(
                // animal name
                "Of the Bear-Ape ARCTOPITHECUS.",
                // animal description
                "There is in America a very deformed beast which the inhabitants call Haut or Hauti, and the Frenchmen, Guenon, " +
                "as big as a great African Munkey. His belly hangeth very low, his head and face like unto a childs, as may be seen by " +
                "this lively picture, and being taken it will fight like a young child. His skin is of an ash-colour, and hairy like a Bear; " +
                "he hath but three claws on a foot, as long as four fingers, and like the thornes of Privet, where-by he climeth up into the " +
                "highest trees, and for the most part liveth of the leaves of a certain tree being of an exceeding height, which the Americans " +
                "call Amahut, and thereof this beast is called Haut. Their tail is about three fingers long, having very little hair there-on; " +
                "I observed, that although it often rained, yet was that beast never wet.",
                // screenshot prefix
                "ARCTOPITHECUS_"
                ));
            animalDescriptions.Add(new AnimalDescription(
                // animal name
                "Of the SIMIVULPA, or Apifb-Fox.",
                // animal description
                "…they have seen a four-footed beast, the forepart like a Fox, and in the hinder part like an Ape, except that it had a mans " +
                "feet, and ears like a Bat, and underneath the common belly, there was a skin like a bag or scrip, where-in she keepeth, lodgeth, " +
                "and carryeth her young ones, until they are able to provide for themselves, without the help of their dam; neither do they come " +
                "forth of that receptacle, except it be to suck milk, or sport themselves, so that the same under-belly is her best remedy against " +
                "the furious Hunters, and other ravening beasts, to preserve her young ones, for she is incredibly swift, running with that carriage " +
                "as if she has no burden. It hath a tail like a Munkey…",
                // screenshot prefix
                "SIMIVULPA_"
                ));
            animalDescriptions.Add(new AnimalDescription(
                // animal name
                "The SCYTHIAN WOLF.",
                // animal description
                "…they have seen a four-footed beast, the forepart like a Fox, and in the hinder part like an Ape, except that it had a mans " +
                "feet, and ears like a Bat, and underneath the common belly, there was a skin like a bag or scrip, where-in she keepeth, lodgeth, " +
                "and carryeth her young ones, until they are able to provide for themselves, without the help of their dam; neither do they come " +
                "forth of that receptacle, except it be to suck milk, or sport themselves, so that the same under-belly is her best remedy against " +
                "the furious Hunters, and other ravening beasts, to preserve her young ones, for she is incredibly swift, running with that carriage " +
                "as if she has no burden. It hath a tail like a Munkey…",
                // screenshot prefix
                "SCYTHIAN_WOLF_"
                ));
            animalDescriptions.Add(new AnimalDescription(
                // animal name
                "Of the TATUS, or Guinean Beast.",
                // animal description
                "This is a four-footed strange Beast, it is naturally covered with a hard shell, divided and interlined like the fins of fishes, " +
                "outwardly seeming buckled to the back like Coat-armor, within which the beast draweth up his body, as a Hedge-hog doth within his " +
                "prickled skin; and therefore I take it to be a Brasilian Hedge-hog. It is not much greater than a little Pig, and by the snout, ears, " +
                "legs, and feet thereof, it seemeth to be of that kind, saving that the snout is a little broader, and shorter than a Pigs, and the " +
                "tail very long like a Lizards or Rats, and one of these being brought into France, did live upon the eating of seeds, and fruits of " +
                "the Gardens, but it appeareth by that picture, or rather the stuffed, which Adriausus Mercellus the Apothecary…that the feet thereof " +
                "are not cloven into two parts like Swine, but rather into many like Dogs, for upon the hinderfeet there are five toes, and upon the " +
                "fore feet four, whereof two are so small that they are scarce visible. The breadth of that same skin was about seven fingers, and the " +
                "length of it two spans, the shell or crust upon the back of it did not reach down unto the rump or tail, but broke off as it were upon " +
                "the hips, some four fingers from the tail.",
                // screenshot prefix
                "TATUS_"
                ));
            animalDescriptions.Add(new AnimalDescription(
                // animal name
                "Of the GULON",
                // animal description
                "This Beast was not known by the Ancients, but hath been since discovered in the Northern parts of the World, and because of the " +
                "voracity thereof, it is called  (Gula)…is thought to be engendered by a Hyena and a Lioness, for the quality it resembleth a Hiena, " +
                "and it is the same which is called (Crocuta;) it is a devouring and an unprofitable creature, having sharper teeth than other creatures. " +
                "Some think it is derived of a Wolf and a Dog, for it is about the bigness of a Dog; it hath the face of Cat, the body and tail of a Fox; " +
                "being black of colour; his feet and nails be most sharp, his skin rusty, the hair very sharp, and it feedeth upon dead carkases. When it " +
                "hath found a dead carcass he eateth thereof so violently, that his belly standeth out like a bell; then he seeketh for some narrow passage " +
                "betwixt two trees, and there draweth through his body, by pressing whereof, he driveth out the meat which he had eaten; and being so emptied " +
                "returneth and devoureth as much as he did before, and goeth again and emptieth himself as in former manner; and so continueth eating and " +
                "emptying till all be eaten.",
                // screenshot prefix
                "GULON_"
                ));
            animalDescriptions.Add(new AnimalDescription(
                // animal name
                "Of the SUCCORATH",
                // animal description
                "…it is of a very deformed shape, and monstrous presence, a great ravener and untamable wilde Beast. When the Hunters that desire her " +
                "skin set upon her, she flyeth very swift, carrying her young ones upon her back, and covering them with her broad tail: Hunters dig " +
                "several pits or great holes in the earth, which they cover with boughs, sticks, and earth, so weakly that if the Beast chance at any " +
                "time to come upon it, she and her young ones fall down into the pit and are taken. This cruel, untamable, impatient, violent, ravening, " +
                "and bloudy beast, perceiving that her natural strength cannot deliver her from the wit and policy of men her hunters, (for being inclosed " +
                "she can never get out again.)…she destroyeth them all with her own teeth; for there was never any of them taken alive…And this is all I " +
                "finde recorded of this most savage Beast.",
                // screenshot prefix
                "SUCCORATH_"
                ));

            RandomizeAnimals();
        }

        void RandomizeAnimals()
        {
            System.Random rand = new System.Random();
            foreach (AnimalDescription animalDescription in animalDescriptions)
            {
                animalDescription.randomNumber = rand.Next();
            }

            animalDescriptions.Sort((firstObj, secondObj) => {
                return firstObj.randomNumber.CompareTo(secondObj.randomNumber);
            });

            //or
            //animalDescriptions = animalDescriptions.OrderBy(x => x.randomNumber).ToList();

        }


    }
}

try to ad this on gameobject it will work.

Neeraj Kumar
  • 957
  • 1
  • 9
  • 20
  • Thanks for correction. Could you tell me what the significance is of the empty method: public AnimalDescription() { }? How does that work in the grand scheme of things? And how do I run this script? I've not worked with namespaces before. I tried to put: void Start () { ConsoleApplication1.Program(); } in another script run the script but it's giving the error: error CS0119: Expression denotes a `type', where a `variable', `value' or `method group' was expected. How can I fix this? – greyBow Jul 22 '15 at 14:08
  • In this script I have only fixed "Can't add script behaviour AnimalDescription. The script needs to derive from MonoBehaviour!" error only. this error was coming because, to add any script to any gameobject you have to derive it from MonoBehaviour class. In respect of empty method: public AnimalDescription() { }, I will say, You should take "jdweng" updated script because it has no significance here in your case. Regarding namespace you should read unity doccumentation here [link](http://docs.unity3d.com/Manual/Namespaces.html) – Neeraj Kumar Jul 23 '15 at 03:38
  • anyways if you want to avoid using namespace, you can, it will still work like a charm. – Neeraj Kumar Jul 23 '15 at 03:45