Exemple #1
0
 public RandomDrift(RandomBase randomX, RandomBase randomY)
 {
     _priority = -3;
     Massless  = true;
     RandomX   = randomX;
     RandomY   = randomY;
 }
Exemple #2
0
        static void Main(string[] args)
        {
            Intro();

            //Generate integer sequence, may be negative
            Console.WriteLine($"\n\nGenerating {NumberOfSamples} random integers ( -{RangeMax} to {RangeMax} ):");
            var randomBase    = new RandomBase();
            var randomNumbers = randomBase.GetNumberSequence(NumberOfSamples, RangeMax);

            PrintSequence <int>(randomNumbers);

            //Generate positive number sequence
            Console.WriteLine($"\n\nGenerating {NumberOfSamples} random integers ( 0 to {RangeMax} ):");
            randomNumbers = randomBase.GetSignedNumberSequence(NumberOfSamples, 100, true);
            PrintSequence <int>(randomNumbers);

            //Generate negative number sequence
            Console.WriteLine($"\n\nGenerating {NumberOfSamples} random integers ( -1{RangeMax} to 0 ):");
            randomNumbers = randomBase.GetSignedNumberSequence(NumberOfSamples, 100, false);
            PrintSequence <int>(randomNumbers);

            //Get random strings of random length
            Console.WriteLine($"\n\nGenerating {NumberOfSamples} random strings:");
            var strSample     = new StringSample();
            var randomStrings = strSample.GetRandomStrings(5);

            PrintSequence <string>(randomStrings);

            Console.WriteLine($"\nDone...\n");
            Signature();
        }
Exemple #3
0
        /// <summary>
        /// Der abstrakte Insekt-Basiskonstruktor.
        /// </summary>
        /// <param name="colony">Das Volk zu dem das neue Insekt gehört.</param>
        /// <param name="vorhandeneInsekten">Hier unbenutzt!</param>
        internal virtual void Init(CoreColony colony, Random random, Dictionary <string, int> vorhandeneInsekten)
        {
            id = neueId;
            neueId++;

            this.colony     = colony;
            this.RandomBase = random;

            koordinate.Richtung = RandomBase.Next(0, 359);

            // Zufällig auf dem Spielfeldrand platzieren.
            if (colony.AntHills.Count == 0) // Am oberen oder unteren Rand platzieren.
            {
                if (RandomBase.Next(2) == 0)
                {
                    koordinate.X  = RandomBase.Next(0, colony.Playground.Width);
                    koordinate.X *= SimulationEnvironment.PLAYGROUND_UNIT;
                    if (RandomBase.Next(2) == 0)
                    {
                        koordinate.Y = 0;
                    }
                    else
                    {
                        koordinate.Y = colony.Playground.Height * SimulationEnvironment.PLAYGROUND_UNIT;
                    }
                }

                // Am linken oder rechten Rand platzieren.
                else
                {
                    if (RandomBase.Next(2) == 0)
                    {
                        koordinate.X = 0;
                    }
                    else
                    {
                        koordinate.X = colony.Playground.Width * SimulationEnvironment.PLAYGROUND_UNIT;
                    }
                    koordinate.Y  = RandomBase.Next(0, colony.Playground.Height);
                    koordinate.Y *= SimulationEnvironment.PLAYGROUND_UNIT;
                }
            }

            // In einem zufälligen Bau platzieren.
            else
            {
                int i = RandomBase.Next(colony.AntHills.Count);
                koordinate.X = colony.AntHills[i].CoordinateBase.X +
                               SimulationEnvironment.Cosinus(
                    colony.AntHills[i].CoordinateBase.Radius, koordinate.Richtung);
                koordinate.Y = colony.AntHills[i].CoordinateBase.Y +
                               SimulationEnvironment.Sinus(
                    colony.AntHills[i].CoordinateBase.Radius, koordinate.Richtung);
            }
        }
        public RectZone(float x, float y, float width, float height, RandomBase randomX, RandomBase randomY)
        {
            if (randomX == null)
            {
                randomX = new UniformRandom();
            }
            if (randomY == null)
            {
                randomY = new UniformRandom();
            }

            _x      = x;
            _y      = y;
            RandomX = randomX;
            RandomY = randomY;
            Width   = width;
            Height  = height;
        }
Exemple #5
0
        /// <summary>
        /// Berechnet die Bewegung des Insekts.
        /// </summary>
        internal void Bewegen()
        {
            reached = false;

            // Insekt dreht sich.
            if (restWinkel != 0)
            {
                // Zielwinkel wird erreicht.
                if (Math.Abs(restWinkel) < colony.Drehgeschwindigkeit[CasteIndexBase])
                {
                    koordinate.Richtung += restWinkel;
                    restWinkel           = 0;
                }

                // Insekt dreht sich nach rechts.
                else if (restWinkel >= colony.Drehgeschwindigkeit[CasteIndexBase])
                {
                    koordinate.Richtung += colony.Drehgeschwindigkeit[CasteIndexBase];
                    RestWinkelBase      -= colony.Drehgeschwindigkeit[CasteIndexBase];
                }

                // Insekt dreht sich nach links.
                else if (restWinkel <= -colony.Drehgeschwindigkeit[CasteIndexBase])
                {
                    koordinate.Richtung -= colony.Drehgeschwindigkeit[CasteIndexBase];
                    RestWinkelBase      += colony.Drehgeschwindigkeit[CasteIndexBase];
                }
            }

            // Insekt geht.
            else if (restStreckeI > 0)
            {
                if (GetragenesObstBase == null)
                {
                    int strecke = Math.Min(restStreckeI, aktuelleGeschwindigkeitI);

                    restStreckeI          -= strecke;
                    zurückgelegteStreckeI += strecke;
                    koordinate.X          += SimulationEnvironment.Cos[strecke, koordinate.Richtung];
                    koordinate.Y          += SimulationEnvironment.Sin[strecke, koordinate.Richtung];
                }
            }

            // Insekt geht auf Ziel zu.
            else if (ziel != null)
            {
                int entfernungI;

                if (ZielBase is CoreMarker)
                {
                    entfernungI = CoreCoordinate.BestimmeEntfernungDerMittelpunkteI(koordinate, ziel.CoordinateBase);
                }
                else
                {
                    entfernungI = CoreCoordinate.BestimmeEntfernungI(koordinate, ziel.CoordinateBase);
                }

                reached = entfernungI <= SimulationEnvironment.PLAYGROUND_UNIT;
                if (!reached)
                {
                    int richtung = CoreCoordinate.BestimmeRichtung(koordinate, ziel.CoordinateBase);

                    // Ziel ist in Sichtweite oder Insekt trägt Obst.
                    if (entfernungI < colony.SichtweiteI[CasteIndexBase] || getragenesObst != null)
                    {
                        restStreckeI = entfernungI;
                    }

                    // Ansonsten Richtung verfälschen.
                    else
                    {
                        richtung    += RandomBase.Next(-18, 18);
                        restStreckeI = colony.SichtweiteI[CasteIndexBase];
                    }

                    dreheInRichtung(richtung);
                }
            }

            // Koordinaten links begrenzen.
            if (koordinate.X < 0)
            {
                koordinate.X = -koordinate.X;
                if (koordinate.Richtung > 90 && koordinate.Richtung <= 180)
                {
                    koordinate.Richtung = 180 - koordinate.Richtung;
                }
                else if (koordinate.Richtung > 180 && koordinate.Richtung < 270)
                {
                    koordinate.Richtung = 540 - koordinate.Richtung;
                }
            }

            // Koordinaten rechts begrenzen.
            else if (koordinate.X > colony.BreiteI)
            {
                koordinate.X = colony.BreiteI2 - koordinate.X;
                if (koordinate.Richtung >= 0 && koordinate.Richtung < 90)
                {
                    koordinate.Richtung = 180 - koordinate.Richtung;
                }
                else if (koordinate.Richtung > 270 && koordinate.Richtung < 360)
                {
                    koordinate.Richtung = 540 - koordinate.Richtung;
                }
            }

            // Koordinaten oben begrenzen.
            if (koordinate.Y < 0)
            {
                koordinate.Y = -koordinate.Y;
                if (koordinate.Richtung > 180 && koordinate.Richtung < 360)
                {
                    koordinate.Richtung = 360 - koordinate.Richtung;
                }
            }

            // Koordinaten unten begrenzen.
            else if (koordinate.Y > colony.HöheI)
            {
                koordinate.Y = colony.HöheI2 - koordinate.Y;
                if (koordinate.Richtung > 0 && koordinate.Richtung < 180)
                {
                    koordinate.Richtung = 360 - koordinate.Richtung;
                }
            }
        }
 static RandomBase_UnitTest()
 {
     RandomBase_ = new RandomBase();
 }
Exemple #7
0
 public Life(RandomBase random)
 {
     Random = random;
 }
Exemple #8
0
 public NormalDrift(float max, RandomBase random)
 {
     Massless = true;
     Random   = random;
 }
Exemple #9
0
 public Rotation(RandomBase random)
 {
     Random = random;
 }
 public Scale(RandomBase random)
 {
     Random = random;
 }
Exemple #11
0
 public Alpha(RandomBase random)
 {
     Random = random;
 }
 public SteadyClock(float ticksPerCall = 1, RandomBase initialDelay = null)
 {
     TicksPerCall = ticksPerCall;
     InitialDelay = _initialDelay == null ? new UniformRandom(0, 0) : _initialDelay;
     currentTime  = 0;
 }
Exemple #13
0
        /// <summary>
        /// テスト処理前の初期化を実行します
        /// </summary>
        private void Initialize()
        {
            m_Random = CreateRandomBase();

            Console.WriteLine("Randmizerクラス : {0} のテストを開始します", m_Random.GetType().FullName);
        }
 public Mass(RandomBase random)
 {
     Random = random;
 }
 public Omega(RandomBase random)
 {
     Random = random;
 }