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