Beispiel #1
0
        public static List <Boom> MaakBomenAan(int aantal, Bos bos1)
        {
            Random      r     = new Random();
            List <Boom> bomen = new List <Boom>();

            while (bomen.Count < aantal + 1)
            {
                Boom nieweBoom = new Boom(r.Next(bos1.XMin, bos1.YMax), r.Next(bos1.YMin, bos1.YMax), bomen.Count);
                bool isOK      = true;
                foreach (Boom element in bomen)
                {
                    if (nieweBoom.X == element.X && nieweBoom.Y == element.Y)
                    {
                        isOK = false;
                    }
                }

                if (isOK)
                {
                    bomen.Add(nieweBoom);
                }
            }
            return(bomen);
        }
Beispiel #2
0
        public static void Spring(List <Aap> apen, List <Boom> bomen, Bos bos)
        {
            int aantalUitHetBos = 0;

            while (aantalUitHetBos < 5)
            {
                foreach (Aap element in apen)
                {
                    int huidigeX = element.Boom_Lijst[element.Boom_Lijst.Count - 1].X;
                    int huidigeY = element.Boom_Lijst[element.Boom_Lijst.Count - 1].Y;
                    if (huidigeX != -1)
                    {
                        double tijdelijkeAfstand = 2000000000;
                        Boom   gekozenBoom       = null;

                        //checken welke boom het dichtste is
                        foreach (Boom ele in bomen)
                        {
                            //check voor niet dezelfde boom te pakken
                            if (ele != element.Boom_Lijst[element.Boom_Lijst.Count - 1])
                            {
                                //checken voor niet een van de vorige bomen te pakken
                                bool isOK = true;
                                foreach (Boom elementEigenAap in element.Boom_Lijst)
                                {
                                    if (elementEigenAap.ID == ele.ID)
                                    {
                                        isOK = false;
                                    }
                                }
                                foreach (Aap c in apen)
                                {
                                    foreach (Boom d in c.Boom_Lijst)
                                    {
                                        if (d == ele)
                                        {
                                            isOK = false;
                                        }
                                    }
                                }
                                if (isOK)
                                {
                                    double werkelijkeAfstand = Math.Sqrt(Math.Pow(huidigeX - ele.X, 2) + Math.Pow(huidigeY - ele.Y, 2));
                                    if (werkelijkeAfstand < tijdelijkeAfstand)
                                    {
                                        tijdelijkeAfstand = werkelijkeAfstand;
                                        gekozenBoom       = ele;
                                    }
                                }
                            }
                        }

                        //de afstand van de dichtste muur berekenen
                        double distanceToBorder = (new List <double>()
                        {
                            bos.YMax - huidigeY, bos.XMax - huidigeX, huidigeY - bos.YMin, huidigeX - bos.XMin
                        }).Min();

                        //de afstand tussen de dichtste muur en de afstand tussen de dichtste boom vergelijken
                        if (tijdelijkeAfstand < distanceToBorder)
                        {
                            element.Boom_Lijst.Add(gekozenBoom);
                            //Console.WriteLine("Aap " + element.Naam + " is op boom: " + gekozenBoom.ID);
                        }
                        else
                        {
                            //aap gaat weg
                            element.Boom_Lijst.Add(new Boom(-1, -1, -1));
                            aantalUitHetBos++;
                            //Console.WriteLine("Aap " + element.Naam + " is uit het bos met " + element.Boom_Lijst.Count+" stappen");
                        }
                    }
                }
            }
        }