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); }
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"); } } } } }