/// <summary> /// Erzeugt einen neuen Bau. /// </summary> /// <param name="colony">Id of colony</param> /// <returns>Der neue Bau.</returns> public CoreAnthill NeuerBau(int colony) { Punkt punkt = findePunkt(); CoreAnthill bau = new CoreAnthill(punkt.X, punkt.Y, SimulationSettings.Custom.AntHillRadius, colony); AntHills.Add(bau); return(bau); }
/// <summary> /// Erzeugt einen neuen Bau. /// </summary> /// <param name="colony">ID der Kolonie</param> /// <returns>Der neue Bau.</returns> public CoreAnthill NeuerBau(int colony) { Vector2D punkt = AntHillPoints[mapRandom.Next(AntHillPoints.Count - 1)]; AntHillPoints.Remove(punkt); CoreAnthill bau = new CoreAnthill(punkt.X, punkt.Y, SimulationSettings.Custom.AntHillRadius, colony); AntHills.Add(bau); return(bau); }
/// <summary> /// Gets the nearest ant hill. /// </summary> /// <returns></returns> public CoreAnthill GetNearestCoreAntHill() { int aktuelleEntfernung; int gemerkteEntfernung = int.MaxValue; CoreAnthill gemerkterBau = null; foreach (CoreAnthill bau in colony.AntHills) { aktuelleEntfernung = CoreCoordinate.BestimmeEntfernungI(CoordinateBase, bau.CoordinateBase); if (aktuelleEntfernung < gemerkteEntfernung) { gemerkterBau = bau; gemerkteEntfernung = aktuelleEntfernung; } } return(gemerkterBau); }
/// <summary> /// Lässt das Insekt zum nächsten Bau gehen. /// </summary> internal void GeheZuBauBase() { if (!NimmBefehleEntgegen) { return; } int aktuelleEntfernung; int gemerkteEntfernung = int.MaxValue; CoreAnthill gemerkterBau = null; foreach (CoreAnthill bau in colony.AntHills) { aktuelleEntfernung = CoreCoordinate.BestimmeEntfernungI(CoordinateBase, bau.CoordinateBase); if (aktuelleEntfernung < gemerkteEntfernung) { gemerkterBau = bau; gemerkteEntfernung = aktuelleEntfernung; } } GeheZuZielBase(gemerkterBau); }
/// <summary> /// Removes fruit from list. /// </summary> /// <param name="colony">winning colony</param> private void removeFruit(CoreColony colony) { //List<CoreFruit> gemerktesObst = new List<CoreFruit>(); for (int j = 0; j < Playground.Fruits.Count; j++) { CoreFruit obst = Playground.Fruits[j]; for (int i = 0; i < colony.AntHills.Count; i++) { CoreAnthill bau = colony.AntHills[i]; if (bau != null) { int entfernung = CoreCoordinate.BestimmeEntfernungI(obst.CoordinateBase, bau.CoordinateBase); if (entfernung <= PLAYGROUND_UNIT) { //gemerktesObst.Add(obst); // Löschen colony.Statistik.CollectedFood += obst.Menge; colony.Statistik.CollectedFruits++; obst.Menge = 0; for (int z = 0; z < obst.TragendeInsekten.Count; z++) { CoreInsect insect = obst.TragendeInsekten[z]; if (insect != null) { insect.GetragenesObstBase = null; insect.AktuelleLastBase = 0; insect.RestStreckeI = 0; insect.RestWinkelBase = 0; insect.GeheZuBauBase(); } } obst.TragendeInsekten.Clear(); Playground.EntferneObst(obst); j--; } } } } }