Exemple #1
0
        static void Verhoer(int st1, int st2, int runde, Verbrechen verbrechen)
        {
            IVerbrechensModus strafe;
            //holt die beiden Strategien aus der Collection.
            BasisStrategie strategie1 = _strategien[st1];
            BasisStrategie strategie2 = _strategien[st2];

            //setzt Startwerte
            int reaktion1 = BasisStrategie.NochNichtVerhoert;
            int reaktion2 = BasisStrategie.NochNichtVerhoert;
            int punkte1 = 0, punkte2 = 0;

            //beide Strategien über den Start informieren (Also es wird die Startmethode aufgerufen)

            strategie1.Start(runde, (int)verbrechen);
            strategie2.Start(runde, (int)verbrechen);

            //Schwere
            strafe = VerbrechensModus.Set(verbrechen);
            Console.WriteLine($"\nVerhör zwischen {strategie1.Name()} und {strategie2.Name()} für {runde} Runden mit der Schwere {verbrechen}.");

            //start
            for (int i = 0; i < runde; i++)
            {
                //beide verhören
                int aktReaktion1 = strategie1.Verhoer(reaktion2);
                int aktReaktion2 = strategie2.Verhoer(reaktion1);
                if (aktReaktion1 == -1 || aktReaktion2 == -1)
                {
                    Console.WriteLine(@"Fehler, Methode ""Verhoer"" hat Fehlercode -1 zurückgegeben");
                    //Hier soll das Programm restartet werden
                }
                //punkte berechnen
                strafe.VerhoerSchwerpunkt(aktReaktion1, aktReaktion2, ref punkte1, ref punkte2);

                //reaktion für den nächsten durchlauf merken
                reaktion1 = aktReaktion1;
                reaktion2 = aktReaktion2;
            }

            //ausgabe
            Console.WriteLine($"{strategie1.Name()} hat {punkte1} Punkte erhalten.");
            Console.WriteLine($"{strategie2.Name()} hat {punkte2} Punkte erhalten.");
            if (punkte1 < punkte2)
            {
                Console.WriteLine($"Somit hat {strategie1.Name()} gewonnen.");
            }
            else if (punkte1 == punkte2)
            {
                Console.WriteLine($"Somit gibt es ein unentschieden zwischen {strategie1.Name()} und {strategie2.Name()}.");
            }
            else
            {
                Console.WriteLine($"Somit hat {strategie2.Name()} gewonnen.");
            }
        }
Exemple #2
0
        public static IVerbrechensModus Set(Verbrechen verbrechen)
        {
            switch (verbrechen)
            {
            case Verbrechen.Leicht:
                return(new LeichterVerstoß());

            case Verbrechen.Mittel:
                return(new MittlererVerstoß());

            case Verbrechen.Schwer:
                return(new SchwererVerstoß());

            default:
                return(null);
            }
        }
        static void VerhoerSGS(int st1, string playername, int runde, Verbrechen verbrechen)
        {
            IVerbrechensModus strafe;
            //holt die gegnerische Strategie aus der Collection.
            BasisStrategie strategie1 = _strategien[st1];

            //setzt Startwerte
            int reaktion1 = BasisStrategie.NochNichtVerhoert;
            int spielerReaktion = BasisStrategie.NochNichtVerhoert;
            int punkte1 = 0, punkte2 = 0;

            //beide Strategien über den Start informieren (Also es wird die Startmethode aufgerufen)

            //strategie1.Start(runde, schwere);
            //strategie2.Start(runde, schwere);

            //Schwere
            strafe = VerbrechensModus.Set(verbrechen);
            Console.WriteLine($"Verhör zwischen {playername} und {strategie1.Name()} für {runde} Runden mit der Schwere {verbrechen}.");

            //start
            for (int i = 0; i < runde; i++)
            {
                int aktReaktion1 = strategie1.Verhoer(spielerReaktion);
                if (i > 0)
                {
                    switch (VerwaltungKram.EingabeZahlMinMax($"{strategie1.Name()} hat {(reaktion1 == 1 ? "dich " : string.Empty)}letzte Runde {(reaktion1 == 0 ? "kooperiert" : "verraten")}, wie möchtest du reagieren?\n[0] Kooperieren\n[1] Verraten", 0, 2))
                    {
                    case 0:
                        spielerReaktion = BasisStrategie.Kooperieren;
                        break;

                    case 1:
                        spielerReaktion = BasisStrategie.Verrat;
                        break;
                    }
                }
                else
                {
                    //Console.WriteLine("Erste Runde, womit moechtest du anfangen?\n[0] Verraten\n[1] Kooperieren");
                    switch (VerwaltungKram.EingabeZahlMinMax("Erste Runde, womit möchtest du anfangen?\n[0] Kooperieren\n[1] Verraten", 0, 2))
                    {
                    case 0:
                        spielerReaktion = BasisStrategie.Kooperieren;
                        break;

                    case 1:
                        spielerReaktion = BasisStrategie.Verrat;
                        break;
                    }
                }
                int aktSpielerReaktion = spielerReaktion;
                if (aktReaktion1 == -1 || aktSpielerReaktion == -1)
                {
                    Console.WriteLine(@"Fehler, Methode ""Verhör"" hat Fehlercode -1 zurückgegeben");
                    //Hier soll das Programm restartet werden
                }
                //punkte berechnen
                strafe.VerhoerSchwerpunkt(aktReaktion1, aktSpielerReaktion, ref punkte1, ref punkte2);
                Console.WriteLine($"Der Punktestand beträgt:\n\t{playername} - {punkte2}\n\t{strategie1.Name()} - {punkte1}\nWobei du{(aktSpielerReaktion == 1 ? " ihn" : string.Empty)} {(aktSpielerReaktion == 1 ? "verraten" : "kooperiert")} hast und {(aktReaktion1 == aktSpielerReaktion ? (aktReaktion1 == 1 ? "er dich auch" : "er auch") : aktReaktion1 == 1 ? "er dich verraten hat" : "er kooperiert hat")}.\n");
                //reaktion für den nächsten durchlauf merken
                reaktion1       = aktReaktion1;
                spielerReaktion = aktSpielerReaktion;
            }

            //ausgabe
            Console.WriteLine($"{strategie1.Name()} hat {punkte1} Punkte erhalten.");
            Console.WriteLine($"{playername} hat {punkte2} Punkte erhalten.");
            if (punkte1 < punkte2)
            {
                Console.WriteLine($"Somit hat {strategie1.Name()} gewonnen.");
            }
            else if (punkte1 == punkte2)
            {
                Console.WriteLine($"Somit gibt es ein unentschieden zwischen {strategie1.Name()} und {playername}.");
            }
            else
            {
                Console.WriteLine($"Somit hat {playername} gewonnen.\n");
            }
        }