public void BerechneGewinnchance_AutoIstInArray()
        {
            Autokarte eigenesAuto = this.autos[0];

            this.teste(eigenesAuto, 0, 0.333333);
            this.teste(eigenesAuto, 7, 0.666666);
        }
        public void BerechneGewinnchance_AutoNichtInArray()
        {
            Autokarte eigenesAuto = new Autokarte("auto", "modell", 9, 9, 9, 9, 9, 9, 9, 9);

            this.teste(eigenesAuto, 0, 0.25);
            this.teste(eigenesAuto, 7, 0.5);
        }
        /// <summary>
        /// Vergleicht den durch <see cref="vergleichsfeld"/> gegebenen Wert zweier Autokarten
        /// und liefert das Ergebnis aus Sicht von <see cref="auto1"/>.
        /// </summary>
        /// <param name="auto1"></param>
        /// <param name="auto2"></param>
        /// <param name="vergleichsfeld"></param>
        /// <returns></returns>
        public Vergleichsergebnis Vergleiche(Autokarte auto1, Autokarte auto2, int vergleichsfeld)
        {
            //Rufe den zum übergebenen vergleichsfeld passenden EigenschaftVergleich ab,
            //nutze diesen anschließend, um den Vergleich durchzuführen
            EigenschaftVergleich eigenschaftVergleich = this.eigenschaften[vergleichsfeld];

            return(eigenschaftVergleich.Vergleiche(auto1, auto2));
        }
        private void teste(Autokarte eigenesAuto, int vergleichsfeld, double erwarteteGewinnchance)
        {
            //Arrange
            GewinnChancenBerechner chancenBerechner = new GewinnChancenBerechner(new AutokartenVergleich());

            //Act
            double ergebnis = chancenBerechner.BerechneGewinnchance(eigenesAuto, this.autos, vergleichsfeld);

            //Assert
            Assert.AreEqual(erwarteteGewinnchance, ergebnis, 0.00001);
        }
Beispiel #5
0
        /// <summary>
        /// Berechnet die Gewinnchance von <see cref="auto"/> gegen die anderen Karten in
        /// <see cref="autosImSpiel"/> bei Auswahl des übergebenen <see cref="vergleichsfeld"/>.
        /// <see cref="auto"/> kann in <see cref="autosImSpiel"/> enthalten sein oder auch nicht.
        /// </summary>
        /// <param name="auto"></param>
        /// <param name="autosImSpiel"></param>
        /// <param name="vergleichsfeld"></param>
        /// <returns></returns>
        public double BerechneGewinnchance(Autokarte auto, Autokarte[] autosImSpiel, int vergleichsfeld)
        {
            int anzahlAndererAutos      = 0;
            int anzahlUnterlegenerAutos = 0;

            //Durchlaufe die übergebenen autosImSpiel
            for (int i = 0; i < autosImSpiel.Length; i++)
            {
                //Ignoriere dabei die übergebene Autokarte, da sie im Spiel nicht gegen sich selbst antreten kann
                if (!auto.Equals(autosImSpiel[i]))
                {
                    anzahlAndererAutos++;
                    if (this.gewinntAuto1(auto, autosImSpiel[i], vergleichsfeld))
                    {
                        anzahlUnterlegenerAutos++;
                    }
                }
            }

            //Gewinnchance = Anteil der Karten, gegen die auto gewinnt, an allen anderen Karten
            return((double)anzahlUnterlegenerAutos / anzahlAndererAutos);
        }
Beispiel #6
0
        /// <summary>
        /// Liefert true, falls <see cref="auto1"/> bei dem übergebenen <see cref="vergleichsfeld"/>
        /// gegen <see cref="auto2"/> gewinnt.
        /// </summary>
        /// <param name="auto1"></param>
        /// <param name="auto2"></param>
        /// <param name="vergleichsfeld"></param>
        /// <returns></returns>
        private bool gewinntAuto1(Autokarte auto1, Autokarte auto2, int vergleichsfeld)
        {
            Vergleichsergebnis vergleichsErgebnis = this.vergleich.Vergleiche(auto1, auto2, vergleichsfeld);

            return(vergleichsErgebnis == Vergleichsergebnis.Gewinn);
        }