예제 #1
0
        private void filledAnimalsBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            Wagon  foundWagon = wagonLogic.madeWagons.Single(wagon => wagon.getString() == filledAnimalsBox.Text);
            string message    = "";

            foreach (Animal animal in foundWagon.filledAnimals)
            {
                message += animal.getString() + "\n";
            }

            MessageBox.Show("Animals: " + message, "Wagon: " + foundWagon.getString(), MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
예제 #2
0
 private void calcCarnivore()
 {
     for (int i = 0; i < Animals.Count; i++)
     {
         if (Animals[i].type == "vlees")
         {
             Wagon wagon = createNewWagon();
             wagon.animals.Add(Animals[i]);
             wagon.punten = wagon.punten + Animals[i].punt;
             wagons.Add(wagon);
         }
     }
     deleteCarnivores();
     calcHerbivore3();
 }
예제 #3
0
        public string TrainWagonCycleAdd(Animal animalrd)
        {
            int Nextwagon    = 1;
            int CurrentWagon = 0;

            for (CurrentWagon = 0; CurrentWagon < Nextwagon; CurrentWagon++)
            {
                bool AnimalIsAdded = wagons[CurrentWagon].AnimalIsAdded(animalrd);

                if (AnimalIsAdded == false)
                {
                    Nextwagon++;
                    add = new Wagon();
                    wagons.Add(add);
                }
            }

            return(string.Format("Animal added to {0}", wagons[CurrentWagon - 1].ToString()));
        }
예제 #4
0
        private bool wagonRules4(Wagon wagon, Animal CheckAnimal)
        {
            if (wagon.punten == 10 || wagon.punten + CheckAnimal.punt > 10)
            {
                return(false);
            }

            foreach (var wagonAnimal in wagon.animals)
            {
                if (wagonAnimal.type == "vlees" && wagonAnimal.grootte == "groot")
                {
                    return(false);
                }
                else if (wagonAnimal.type == "vlees" && CheckAnimal.grootte == "klein")
                {
                    return(false);
                }
                else if (CheckAnimal.grootte == "groot" && wagonAnimal.type == "vlees" && wagonAnimal.grootte == "middelmatig")
                {
                    return(true);
                }
                else if (CheckAnimal.grootte == "groot" && wagonAnimal.type == "vlees" && wagonAnimal.grootte == "klein")
                {
                    return(true);
                }
                else if (CheckAnimal.grootte == "middelmatig" && wagonAnimal.type == "vlees" && wagonAnimal.grootte == "klein")
                {
                    return(true);
                }
                if (CheckAnimal.type == wagonAnimal.type)
                {
                    return(true);
                }
            }

            return(false);
        }
예제 #5
0
        public static List <Wagon> RunAlgoritme(List <Dier> dieren)
        {
            int          wagonCounter         = 1;
            List <Wagon> wagonLijstIncompleet = new List <Wagon>();
            List <Wagon> wagonLijstCompleet   = new List <Wagon>();

            List <Dier> dierenTemp = new List <Dier>();

            //Iedere carnivoor een wagon geven
            foreach (Dier dier in dieren)
            {
                if (dier.diet == Dier.Dieet.carnivoor)
                {
                    Wagon wagon = new Wagon(wagonCounter++);
                    switch (dier.size)
                    {
                    case Dier.Grote.groot:
                        wagon.addDierAanWagon(dier);
                        wagonLijstCompleet.Add(wagon);
                        break;

                    default:
                        wagon.addDierAanWagon(dier);
                        wagonLijstIncompleet.Add(wagon);
                        break;
                    }
                }
                else
                {
                    dierenTemp.Add(dier);
                }
            }
            dieren.Clear();
            foreach (Dier dier in dierenTemp)
            {
                dieren.Add(dier);
            }
            dierenTemp.Clear();

            //Iedere middel carnivoor een grote herbivoor geven
            foreach (Dier dier in dieren)
            {
                if (dier.size == Dier.Grote.groot)
                {
                    bool dierToegevoegd = false;
                    foreach (Wagon wagon in wagonLijstIncompleet)
                    {
                        if (wagon.HuidigeGrote == 3) //is dit een wagon met een middel carnivoor?
                        {
                            wagon.addDierAanWagon(dier);
                            wagonLijstCompleet.Add(wagon);
                            wagonLijstIncompleet.Remove(wagon);
                            dierToegevoegd = true;
                            break;
                        }
                    }
                    if (!dierToegevoegd)
                    {
                        dierenTemp.Add(dier);
                    }
                }
                else
                {
                    dierenTemp.Add(dier);
                }
            }
            dieren.Clear();
            foreach (Dier dier in dierenTemp)
            {
                dieren.Add(dier);
            }
            dierenTemp.Clear();

            //alle overige wagons met middel carnivoren naar de complete lijst zetten
            List <Wagon> wagonTemp = new List <Wagon>();

            foreach (Wagon wagon in wagonLijstIncompleet)
            {
                if (wagon.HuidigeGrote == 3)
                {
                    wagonLijstCompleet.Add(wagon);
                }
                else
                {
                    wagonTemp.Add(wagon);
                }
            }
            wagonLijstIncompleet.Clear();
            foreach (Wagon wagon in wagonTemp)
            {
                wagonLijstIncompleet.Add(wagon);
            }
            wagonTemp.Clear();

            //iedere wagon met een kleine carnivoor opvullen met de overige grote herbivoren
            foreach (Dier dier in dieren)
            {
                if (dier.size == Dier.Grote.groot)
                {
                    bool dierToegevoegd = false;
                    foreach (Wagon wagon in wagonLijstIncompleet)
                    {
                        if (wagon.HuidigeGrote == 1) //is dit een wagon met alleen 1 kleine carnivoor?
                        {
                            wagon.addDierAanWagon(dier);
                            dierToegevoegd = true;
                            break;
                        }
                    }
                    if (!dierToegevoegd)
                    {
                        dierenTemp.Add(dier);
                    }
                }
                else
                {
                    dierenTemp.Add(dier);
                }
            }
            dieren.Clear();
            foreach (Dier dier in dierenTemp)
            {
                dieren.Add(dier);
            }
            dierenTemp.Clear();

            //iedere wagon met een kleine carnivoor zo effiecent mogelijk opvullen
            foreach (Dier dier in dieren)
            {
                if (dier.size == Dier.Grote.middel)
                {
                    bool dierToegevoegd = false;
                    foreach (Wagon wagon in wagonLijstIncompleet)
                    {
                        if (wagon.HuidigeGrote <= 7) //kan er nog een middel herbivoor bij
                        {
                            wagon.addDierAanWagon(dier);
                            wagonLijstCompleet.Add(wagon);
                            wagonLijstIncompleet.Remove(wagon);
                            dierToegevoegd = true;
                            break;
                        }
                    }
                    if (!dierToegevoegd)
                    {
                        dierenTemp.Add(dier);
                    }
                }
                else
                {
                    dierenTemp.Add(dier);
                }
            }
            dieren.Clear();
            foreach (Dier dier in dierenTemp)
            {
                dieren.Add(dier);
            }
            dierenTemp.Clear();

            // de lijst van dieren sorteren op grote,
            //dit is omdat er alleen nog maar herbivoren zijn en deze moeten zo efficient mogelijk geplaatst worden in wagons
            //en nu kan je de lijst van boven naar beneden doorlopen en dieren toevoegen tot er geen plek meer is
            dieren = sorteerDierenOpGrote(dieren);

            //overige herbivoren zo efficient opdelen over wagons
            foreach (Dier dier in dieren)
            {
                if (wagonLijstIncompleet.Count == 0)
                {
                    wagonLijstIncompleet.Add(new Wagon(wagonCounter++));
                }
                foreach (Wagon wagon in wagonLijstIncompleet)
                {
                    if ((wagon.HuidigeGrote + (int)dier.size) <= 10) //is er plek voor een grote herbivoor?
                    {
                        wagon.addDierAanWagon(dier);
                        break;
                    }
                }
            }
            foreach (Wagon wagon in wagonLijstIncompleet)
            {
                wagonLijstCompleet.Add(wagon);
            }


            return(wagonLijstCompleet);
        }
        private void listBox2_SelectedIndexChanged(object sender, EventArgs e)
        {
            Wagon selectedWagon = listBox2.SelectedItem as Wagon;

            listBox3.DataSource = selectedWagon.GetAllAnimals();
        }
예제 #7
0
 public Train()
 {
     add    = new Wagon();
     wagons = new List <Wagon>();
     wagons.Add(add);
 }
예제 #8
0
        public void AddWagon()
        {
            Wagon wagon = new Wagon();

            wagonList.Add(wagon);
        }