Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 3
0
        /// <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);
        }
Exemplo n.º 4
0
        /// <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);
        }
Exemplo n.º 5
0
        /// <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--;
                        }
                    }
                }
            }
        }