示例#1
0
        /// <summary>
        /// Diese Methode verwaltet ein einfaches Verhör zwischen zwei Strategien
        /// </summary>
        static void VerhörEinfach()
        {
            // Überschrift
            WriteTrennstrich();
            Console.WriteLine(spielModi[0]);
            WriteTrennstrich();

            // Auswahl der beiden Strategie, der Rundenanzahl sowie der Schwere der Verstöße
            int st1 = 0, st2 = 0;

            StrategieAuswahl(ref st1, ref st2);

            int runde, schwere;

            runde   = VerwaltungKram.EingabeZahlMinMax("Rundenanzahl: ", 1, 101);
            schwere = VerwaltungKram.EingabeZahlMinMax("Schwere der Verstöße (0 = Leicht, 1 = Mittel, 2 = Schwer): ", 0, 3);

            // Holt die beiden Strategien aus der Collection.
            BasisStrategie strategie1 = _strategien[st1];
            BasisStrategie strategie2 = _strategien[st2];

            // Überschrift
            WriteTrennstrich();
            Console.WriteLine("Verhör");
            WriteTrennstrich();

            // Starten des Verhörs mit gegebenen Faktoren
            int punkte1 = 0, punkte2 = 0;

            Verhoer2Strategien(strategie1, strategie2, runde, schwere, ref punkte1, ref punkte2);

            // Ausgabe des Siegers
            WriteLeerzeile();
            Siegerehrung(strategie1.Name(), strategie2.Name(), punkte1, punkte2);
        }
        /// <summary>
        /// Fragt gegnerische Strategie, Länge, Schwere und Spielername ab und startet den Verhör.
        /// </summary>
        static void PlayerVsStrategie()
        {
            //Rundenstart
            try { Console.Clear(); }
            catch (IOException e) { }

            int    st;
            int    runde, schwere;
            string spieler;

            Console.WriteLine("Willkommen zum Verhör gegen eine Strategie\nStrategien:");
            for (int i = 0; i < _strategien.Count; i++)
            {
                Console.WriteLine($"{i} - {_strategien[i].Name()}");
            }
            st      = VerwaltungKram.EingabeZahlMinMax("Wählen Sie die 1. Strategie", 0, _strategien.Count);
            runde   = VerwaltungKram.EingabeZahlMinMax("Wie viele Runden sollen verhoert werden?", 1, 101);
            schwere = VerwaltungKram.EingabeZahlMinMax("Wie schwer sind die Verstöße? (0=leicht  | 1=mittel | 2=schwer)", 0, 3);
            Console.WriteLine("Geben sie ihren Spielernamen ein: ");
            spieler = Console.ReadLine();

            PlayerVerhoer(st, runde, schwere, spieler);

            //Rundenende
            Console.ReadKey();
            try { Console.Clear(); }
            catch (IOException e) { }
        }
示例#3
0
        public static void Start(List <BasisStrategie> strategien)
        {
            _strategien = strategien;
            int        st1, st2;
            int        runde;
            Verbrechen verbrechen;

            Console.WriteLine("Willkommen zum Verhör zwischen 2 Strategien");
            for (int i = 0; i < _strategien.Count; i++)
            {
                Console.WriteLine($"{i} - {_strategien[i].Name()}");
            }
            Console.WriteLine("Wählen Sie ihre 2 Strategien:");
            st1 = VerwaltungKram.EingabeZahlMinMax("Wählen Sie die 1. Strategie", 0, _strategien.Count);
            st2 = VerwaltungKram.EingabeZahlMinMax("Wählen Sie die 2. Strategie", 0, _strategien.Count);
            while (st1 == st2)
            {
                Console.WriteLine("Du hast die gleichen Strategien gewählt, dies kann zu Problemen führen,\nwenn die Strategien zum Beispiel auf den gleichen Rundenzähler zugreifen.\nAuf Grund dessen haben wir die Möglichkeit ausgeschaltet, bitte fahre fort..\n");
                st1 = VerwaltungKram.EingabeZahlMinMax("Wählen Sie die 1. Strategie", 0, _strategien.Count);
                st2 = VerwaltungKram.EingabeZahlMinMax("Wählen Sie die 2. Strategie", 0, _strategien.Count);
            }
            runde      = VerwaltungKram.EingabeZahlMinMax("Wie viele Runden sollen diese verhört werden?", 1, 101);
            verbrechen = (Verbrechen)VerwaltungKram.EingabeZahlMinMax("Wie schwer sind die Verstöße? (2=schwer)", 0, 3);

            Verhoer(st1, st2, runde, verbrechen);
        }
        /// <summary>
        /// Startet ein Spiel mit neuer Wahl für Rundenanzahl und Schwere.
        /// </summary>
        /// <param name="spiel"></param>
        /// <param name="st1"></param>
        /// <param name="st2"></param>
        /// <param name="lastGame"></param>
        static void Spiel(int spiel, int st1, int st2, bool lastGame)
        {
            int punkte1 = 0, punkte2 = 0;

            BasisStrategie strategie1 = _strategien[st1];
            BasisStrategie strategie2 = _strategien[st2];


            int runde   = VerwaltungKram.EingabeZahlMinMax("Wie viele Runden sollen diese verhört werden?", 1, 101);
            int schwere = VerwaltungKram.EingabeZahlMinMax("Wie schwer sind die Verstöße? (0=leicht  | 1=mittel | 2=schwer)", 0, 3);

            Verhoer(spiel, ref strategie1, ref strategie2, runde, schwere, ref punkte1, ref punkte2);

            //ausgabe
            Console.WriteLine($"Spiel {spiel}:");
            Console.WriteLine($"{strategie1.Name()} hat {punkte1} Punkte erhalten.");
            Console.WriteLine($"{strategie2.Name()} hat {punkte2} Punkte erhalten.");

            if (lastGame)
            {
                if (punkte1 < punkte2)
                {
                    Console.WriteLine("Somit hat {0} gewonnen.", strategie1.Name());
                }
                else if (punkte1 == punkte2)
                {
                    Console.WriteLine("Somit steht es unentschieden.");
                }
                else
                {
                    Console.WriteLine("Somit hat {0} gewonnen.", strategie2.Name());
                }
            }
        }
        static void AutomatischerVerhoerer()
        {
            //0=leicht, 1=mittel, 2=schwer
            int schwere = 0;

            automatischesVerhoer = true;

            //reset punkte
            gesamtPunkte1 = 0;
            gesamtPunkte2 = 0;


            Console.WriteLine("Willkommen zum Verhör zwischen 2 Strategien");

            // Auflistung der Strategien
            for (int i = 0; i < _strategien.Count; i++)
            {
                Console.WriteLine($"{i} - {_strategien[i].Name()}");
            }

            // Wählen der 2 Strategien
            Console.WriteLine("Wählen Sie ihre 2 Gefangene:");
            int st1 = VerwaltungKram.EingabeZahlMinMax("Wählen Sie die 1. Strategie", 0, _strategien.Count);
            int st2 = VerwaltungKram.EingabeZahlMinMax("Wählen Sie die 2. Strategie", 0, _strategien.Count);

            //für jeden Schwierigkeitsgrad 1 Durchlauf
            for (int a = 0; a < 3; a++)
            {
                //beginnt mit 5 Runden
                int runde = 5;

                //jeweils 1 Durchlauf für 5, 25, 100 Runden
                for (int b = 0; b < 3; b++)
                {
                    //setzt Punkte für jede Runde zurück
                    punkte1 = 0;
                    punkte2 = 0;

                    //startet das Verhoer
                    Verhoer(st1, st2, runde, schwere);

                    PunkteAnpassen(ref runde);

                    gesamtPunkte1 += punkte1;
                    gesamtPunkte2 += punkte2;
                }
                schwere++;
            }


            BasisStrategie strategie1 = _strategien[st1];
            BasisStrategie strategie2 = _strategien[st2];

            Console.WriteLine("---------------------------------------------------");
            Console.WriteLine();
            Console.WriteLine($"{strategie1.Name()} hat insgesamt {gesamtPunkte1} Punkte erhalten.");
            Console.WriteLine($"{strategie2.Name()} hat insgesamt {gesamtPunkte2} Punkte erhalten.");
            Console.WriteLine("Somit hat {0} gewonnen.", gesamtPunkte1 < gesamtPunkte2 ? strategie1.Name() : strategie2.Name());
            Console.WriteLine();
        }
示例#6
0
        /// <summary>
        /// Fragt 2 Strategien, Länge und Schwere ab.
        /// </summary>
        static void Gefangene2Strats()
        {
            int runde, schwere;

            Console.WriteLine("\nWillkommen zum Verhör zwischen 2 Strategien!");

            (BasisStrategie strategie1, BasisStrategie strategie2) = Utility.Auswahl2Strats();
            runde   = VerwaltungKram.EingabeZahlMinMax("Wie viele Runden sollen diese verhört werden?", 1, 101);
            schwere = VerwaltungKram.EingabeZahlMinMax("Wie schwer sind die Verstöße? (0=leicht, 1=mittel, 2=schwer)", 0, 3);

            (int punkte1, int punkte2) = VerhoerVerwaltung.Verhoer(strategie1, strategie2, runde, schwere);

            if (punkte1 < punkte2)
            {
                Console.WriteLine("\nSomit hat {0} gewonnen.", strategie1.Name());
            }
            if (punkte1 > punkte2)
            {
                Console.WriteLine("\nSomit hat {0} gewonnen.", strategie2.Name());
            }
            if (punkte1 == punkte2)
            {
                Console.WriteLine("\nUnentschieden.");
            }
        }
示例#7
0
        /// <summary>
        /// Fragt 2 Strategien, Länge und Schwere ab.
        /// </summary>
        static void Gefangene2()
        {
            int st1, st2;
            int runde, schwere;

            // Überschrift
            writeTrennstrich();
            Console.WriteLine(spielModi[0]);
            writeTrennstrich();

            // Auswahl der beiden Strategie, der Rundenanzahl sowie der Schwere der Verstöße
            Console.WriteLine("Bitte wähle deine 2 Strategien:");
            for (int i = 0; i < _strategien.Count; i++)
            {
                Console.WriteLine($"{i} - {_strategien[i].Name()}");
            }
            Console.WriteLine();
            st1     = VerwaltungKram.EingabeZahlMinMax("1. Strategie: ", 0, _strategien.Count);
            st2     = VerwaltungKram.EingabeZahlMinMax("2. Strategie: ", 0, _strategien.Count);
            runde   = VerwaltungKram.EingabeZahlMinMax("Rundenanzahl: ", 1, 101);
            schwere = VerwaltungKram.EingabeZahlMinMax("Schwere der Verstöße (0 = Leicht, 1 = Mittel, 2 = Schwer): ", 0, 3);
            writeLeerzeile();

            // Starten des Verhörs mit gegebenen Faktoren
            Verhoer(st1, st2, runde, schwere);
        }
示例#8
0
        /// <summary>
        /// Diese Methode gibt dem Benutzer die Möglichkeit, eine Strategie auszuwählen.
        /// </summary>
        /// <param name="st1">Id der Strategie</param>
        static void StrategieAuswahl(ref int st1)
        {
            Console.WriteLine("Bitte wähle eine gegnerische Strategie:");
            WriteStrategien();
            WriteLeerzeile();

            st1 = VerwaltungKram.EingabeZahlMinMax("Gegnerische Strategie: ", 0, _strategien.Count);
        }
示例#9
0
        /// <summary>
        /// Diese Methode gibt dem Benutzer die Möglichkeit, zwei Strategien auszuwählen.
        /// </summary>
        /// <param name="st1">Id der ersten Strategie</param>
        /// <param name="st2">Id der zweiten Strategie</param>
        static void StrategieAuswahl(ref int st1, ref int st2)
        {
            Console.WriteLine("Bitte wähle 2 Strategien:");
            WriteStrategien();
            WriteLeerzeile();

            st1 = VerwaltungKram.EingabeZahlMinMax("1. Strategie: ", 0, _strategien.Count);
            st2 = VerwaltungKram.EingabeZahlMinMax("2. Strategie: ", 0, _strategien.Count);
        }
示例#10
0
        public static void Start(List <BasisStrategie> strategien)
        {
            _strategien = strategien;
            Punkte      = new int[_strategien.Count];
            var verbrechen = (Verbrechen)VerwaltungKram.EingabeZahlMinMax("Wie schwer sind die Verstöße? (2=schwer)", 0, 3);

            Console.WriteLine("\nStarte Spiellog:\n------------------------------------------------------------------------------------------------------------------------\n");
            _strategien.ForEach(x => Verhoer(Pos, 9, verbrechen));
            Pos = 0;
            Ergebnis();
        }
示例#11
0
        /// <summary>
        /// Diese Methode verwaltet ein Verhör zwischen dem Benutzer und einer gegnerischen Strategie
        /// </summary>
        static void VerhörMitBenutzer()
        {
            // Überschrift
            WriteTrennstrich();
            Console.WriteLine(spielModi[2]);
            WriteTrennstrich();

            // Auswahl der gegnerischen Strategie, Rundenanzahl sowie Schwere
            int st1 = 0;

            StrategieAuswahl(ref st1);

            int runden, schwere;

            runden  = VerwaltungKram.EingabeZahlMinMax("Rundenanzahl: ", 1, 101);
            schwere = VerwaltungKram.EingabeZahlMinMax("Schwere der Verstöße (0 = Leicht, 1 = Mittel, 2 = Schwer): ", 0, 3);

            // Holt die gegnerische Strategie aus der Collection.
            BasisStrategie strategie1 = _strategien[st1];

            // Überschrift
            WriteTrennstrich();
            Console.WriteLine("Verhör");
            WriteTrennstrich();

            // gegnerische Strategien über den Start informieren (Also es wird die Startmethode aufgerufen)
            strategie1.Start(runden, schwere);

            // Start der Verhöre
            int alteBenutzerReaktion = BasisStrategie.NochNichtVerhoert;
            int punkte1 = 0, punkte2 = 0;

            for (int i = 0; i < runden; i++)
            {
                Console.WriteLine("Runde " + (i + 1) + ":");
                int benutzerReaktion = VerwaltungKram.EingabeZahlMinMax("   Deine Reaktion (0=Kooperieren, 1=Verraten): ", 0, 2);

                //Gegnerische Strategie wird verhört
                int aktReaktion1 = strategie1.Verhoer(alteBenutzerReaktion);
                Console.WriteLine($"   Gegnerische Strategie ('{strategie1.Name()}'): " + aktReaktion1);

                //Punkte werden berechnet
                VerhoerPunkte(schwere, aktReaktion1, benutzerReaktion, ref punkte1, ref punkte2);

                //Reaktion für den nächsten Durchlauf merken
                alteBenutzerReaktion = benutzerReaktion;
            }

            // Ausgabe des Siegers
            WriteLeerzeile();
            Siegerehrung(strategie1.Name(), "Benutzer", punkte1, punkte2);
        }
示例#12
0
        public static BasisStrategie AuswahlStrat()
        {
            int st;

            Console.WriteLine("Wählen Sie ihre gegnerische Strategien:");
            for (int i = 0; i < VerwaltungProgramm._strategien.Count; i++)
            {
                Console.WriteLine($"{i} - {VerwaltungProgramm._strategien[i].Name()}");
            }
            st = VerwaltungKram.EingabeZahlMinMax("Auswahl: ", 0, VerwaltungProgramm._strategien.Count);
            BasisStrategie strategie = VerwaltungProgramm._strategien[st];

            return(strategie);
        }
示例#13
0
        static void ManAgainstMachine()
        {
            int st;
            int runde, schwere;

            Console.WriteLine("Willkommen zum Verhör zwischen Nutzer und einer Strategie");
            for (int i = 0; i < _strategien.Count; i++)
            {
                Console.WriteLine($"{i} - {_strategien[i].Name()}");
            }
            st      = VerwaltungKram.EingabeZahlMinMax("Wählen Sie die Strategie, gegen die Sie spielen wollen: ", 0, _strategien.Count);
            runde   = VerwaltungKram.EingabeZahlMinMax("Wie viele Runden sollen diese verhört werden?", 1, 101);
            schwere = VerwaltungKram.EingabeZahlMinMax("Wie schwer sind die Verstöße? (0=leicht, 1=mittel, 2=schwer)", 0, 3);

            VerhoerMitUser(st, runde, schwere);
        }
示例#14
0
        /// <summary>
        /// Fragt 2 Strategien und Schwere ab und spielt ein best of nine.
        /// </summary>
        static void BestOfNine()
        {
            int st1, st2;
            int schwere;
            int winCount1 = 0;
            int winCount2 = 0;

            Console.WriteLine("Willkommen zum Best of 9 zwischen 2 Strategien");
            for (int i = 0; i < _strategien.Count; i++)
            {
                Console.WriteLine($"{i} - {_strategien[i].Name()}");
            }

            Console.WriteLine("Wählen Sie ihre 2 Strategien:");
            st1     = VerwaltungKram.EingabeZahlMinMax("Wählen Sie die 1. Strategie", 0, _strategien.Count);
            st2     = VerwaltungKram.EingabeZahlMinMax("Wählen Sie die 2. Strategie", 0, _strategien.Count);
            schwere = VerwaltungKram.EingabeZahlMinMax("Wie schwer sind die Verstöße? (0=leicht, 1=mittel, 2=schwer)", 0, 3);

            for (int i = 1; i < 9; i++)
            {
                int result = VerhoerReturn(st1, st2, 9, schwere);
                switch (result)
                {
                case 1:
                    winCount1 += 1;
                    break;

                case 2:
                    winCount2 += 1;
                    break;
                }
            }

            if (winCount1 > winCount2)
            {
                Console.WriteLine("Der Spieler 1 hat mit {0} Runden gewonnen", winCount1);
            }
            else if (winCount1 == winCount2)
            {
                Console.WriteLine("Die beiden Spieler haben unentschieden gespielt");
            }
            else
            {
                Console.WriteLine("Der Spieler 2 hat mit {0} Runden gewonnen", winCount2);
            }
        }
示例#15
0
        public static (BasisStrategie, BasisStrategie) Auswahl2Strats()
        {
            int st1, st2;

            Console.WriteLine("Wählen Sie ihre 2 Strategien:");
            for (int i = 0; i < VerwaltungProgramm._strategien.Count; i++)
            {
                Console.WriteLine($"{i} - {VerwaltungProgramm._strategien[i].Name()}");
            }
            st1 = VerwaltungKram.EingabeZahlMinMax("Wählen Sie die 1. Strategie", 0, VerwaltungProgramm._strategien.Count);
            st2 = VerwaltungKram.EingabeZahlMinMax("Wählen Sie die 2. Strategie", 0, VerwaltungProgramm._strategien.Count);

            //holt die beiden Strategien aus der Collection.
            BasisStrategie strategie1 = VerwaltungProgramm._strategien[st1];
            BasisStrategie strategie2 = VerwaltungProgramm._strategien[st2];

            return(strategie1, strategie2);
        }
示例#16
0
        /// <summary>
        /// Fragt 2 Strategien, Länge und Schwere ab.
        /// </summary>
        static void Gefangene2()
        {
            int st1, st2;
            int runde, schwere;

            Console.WriteLine("Willkommen zum Verhör zwischen 2 Strategien");
            for (int i = 0; i < _strategien.Count; i++)
            {
                Console.WriteLine($"{i} - {_strategien[i].Name()}");
            }
            Console.WriteLine("Wählen Sie ihre 2 Strategien:");
            st1     = VerwaltungKram.EingabeZahlMinMax("Wählen Sie die 1. Strategie", 0, _strategien.Count);
            st2     = VerwaltungKram.EingabeZahlMinMax("Wählen Sie die 2. Strategie", 0, _strategien.Count);
            runde   = VerwaltungKram.EingabeZahlMinMax("Wie viele Runden sollen diese verhört werden?", 1, 101);
            schwere = VerwaltungKram.EingabeZahlMinMax("Wie schwer sind die Verstöße? (0 = leicht, 1 = mittel schwer, 2=schwer)", 0, 3);

            Verhoer(st1, st2, runde, schwere);
        }
        public static void Start(List <BasisStrategie> strategien)
        {
            _strategien = strategien;
            int        st1;
            int        runde;
            string     playername;
            Verbrechen verbrechen;

            Console.WriteLine($"\nWillkommen zum Verhör\nWähle deinen Namen: ");
            playername = Console.ReadLine();
            Console.WriteLine("\nNun beginnt das Verhör zwischen Spieler und Strategie.\nGegen welche Strategie möchtest du spielen?");
            for (int i = 0; i < _strategien.Count; i++)
            {
                Console.WriteLine($"{i} - {_strategien[i].Name()}");
            }
            st1        = VerwaltungKram.EingabeZahlMinMax(string.Empty, 0, _strategien.Count);
            runde      = VerwaltungKram.EingabeZahlMinMax("Wie viele Runden sollen diese verhört werden?", 1, 101);
            verbrechen = (Verbrechen)VerwaltungKram.EingabeZahlMinMax("Wie schwer sind die Verstöße? (2=schwer)", 0, 3);

            VerhoerSGS(st1, playername, runde, verbrechen);
        }
示例#18
0
        /// <summary>
        /// Fragt 2 Strategien, Länge und Schwere ab.
        /// </summary>
        static void Gefangene2()
        {
            //Rundenstart
            try { Console.Clear(); }
            catch (IOException e) { }

            int st1, st2;
            int spiele;

            Console.WriteLine("Willkommen zum Verhör zwischen 2 Strategien\nStrategien:");
            for (int i = 0; i < _strategien.Count; i++)
            {
                Console.WriteLine($"{i} - {_strategien[i].Name()}");
            }
            Console.WriteLine("\nWählen Sie ihre 2 Strategien:");
            st1    = VerwaltungKram.EingabeZahlMinMax("Wählen Sie die 1. Strategie", 0, _strategien.Count);
            st2    = VerwaltungKram.EingabeZahlMinMax("Wählen Sie die 2. Strategie", 0, _strategien.Count);
            spiele = VerwaltungKram.EingabeZahlMinMax("Wie viele Spiele sollen gespielt werden?", 1, 10);

            for (int i = 0; i < spiele; ++i)
            {
                Spiel(i, st1, st2, i == spiele - 1);
            }
        }
        static void MenschGegenMaschine()
        {
            int maschine;
            int runde, schwere;


            Console.Clear();
            Console.WriteLine("Willkommen bei Mensch vs. Maschine.");
            for (int i = 0; i < _strategien.Count; i++)
            {
                Console.WriteLine($"{i} - {_strategien[i].Name()}");
            }

            // Anforderung von Benutzereingaben
            maschine = VerwaltungKram.EingabeZahlMinMax("Wählen Sie die Strategie ihres Gegners aus", 0, _strategien.Count);
            runde    = VerwaltungKram.EingabeZahlMinMax("Wie viele Runden sollen verhört werden?", 1, 101);
            schwere  = VerwaltungKram.EingabeZahlMinMax("Wie schwer sind die Verstöße? (0=leicht, 1=mittel, 2=schwer)", 0, 3);

            //holt die gewählte Maschinenstrategie aus der Collection.
            BasisStrategie strategieMaschine = _strategien[maschine];
            int            reaktionMaschine  = BasisStrategie.NochNichtVerhoert;
            int            reaktionMensch    = BasisStrategie.NochNichtVerhoert;

            //Aufruf der Start-Methode der Maschinenstrategie
            strategieMaschine.Start(runde, schwere);

            Console.Clear();

            // Start der Verhörung
            for (int i = 0; i < runde; i++)
            {
                Console.Clear();
                Console.Write("Sie spielen auf");

                switch (schwere)
                {
                case 0:
                    Console.WriteLine(" leicht.");
                    break;

                case 1:
                    Console.WriteLine(" mittel.");
                    break;

                case 2:
                    Console.WriteLine(" schwer");
                    break;
                }

                Console.WriteLine("Verbleibende Runden: " + (runde - i - 1));

                switch (reaktionMaschine)
                {
                case 0:
                    Console.WriteLine("In der letzten Runde hat ihr Gegner kooperiert.");
                    break;

                case 1:
                    Console.WriteLine("In der letzten Runde hat ihr Gegner verraten.");
                    break;
                }

                //beide verhören
                int aktReaktionMensch   = VerwaltungKram.EingabeZahlMinMax("Welche Aktion möchten Sie diese Runde wählen? [0] Kooperieren [1] Verraten", 0, 2);
                int aktReaktionMaschine = strategieMaschine.Verhoer(reaktionMensch);



                // Punktberechnung
                switch (schwere)
                {
                case 0:
                    Leicht(aktReaktionMaschine, aktReaktionMensch);
                    break;

                case 1:
                    Mittel(aktReaktionMaschine, aktReaktionMensch);
                    break;

                case 2:
                    Schwer(aktReaktionMaschine, aktReaktionMensch);
                    break;
                }

                // Zuweisung der letzten Reaktion der beiden für den nächsten Durchlauf
                reaktionMaschine = aktReaktionMaschine;
                reaktionMensch   = aktReaktionMensch;
            }

            Console.Clear();
            Console.WriteLine("Punkte der Maschine: " + punkte1);
            Console.WriteLine("Punkte des Menschen: " + punkte2);
            if (punkte1 > punkte2)
            {
                Console.WriteLine("Der Mensch hat gewonnen!");
            }
            else if (punkte2 > punkte1)
            {
                Console.WriteLine("Die Maschine hat gewonnen!");
            }
            else
            {
                Console.WriteLine("Es ist ein Unentschieden!");
            }
            Console.Read();
        }
示例#20
0
        /// <summary>
        /// Startet ein Verhör zwischen der Strategie an der Position st und dem Benutzer über die Länge von runde und der Schwere schwere
        /// </summary>
        /// <param name="st"></param>
        /// <param name="runde"></param>
        /// <param name="schwere"></param>
        static void VerhoerMitUser(int st, int runde, int schwere)
        {
            //holt die Strategie aus der Collection.
            BasisStrategie strategie = _strategien[st];

            //setzt Startwerte
            int reaktionUser = BasisStrategie.NochNichtVerhoert;
            int reaktionCPU = BasisStrategie.NochNichtVerhoert;
            int punkte1 = 0, punkte2 = 0;

            //die Strategie über den Start informieren (Also es wird die Startmethode aufgerufen)
            strategie.Start(runde, schwere);
            if (runde == 1)
            {
                Console.WriteLine($"Verhör zwischen Benutzer und {strategie.Name()} für {runde} Runde.");
            }
            else
            {
                Console.WriteLine($"Verhör zwischen Benutzer und {strategie.Name()} für {runde} Runden.");
            }

            //start
            for (int i = 0; i < runde; i++)
            {
                Console.WriteLine($"Runde {i + 1}");
                //beide verhören
                int aktReaktionUser;
                switch (reaktionCPU)
                {
                default:
                    aktReaktionUser = VerwaltungKram.EingabeZahlMinMax($"Ihr Gegenüber wurde noch nicht verhöhrt. Geben Sie die Tat zu? (0 = Abstreiten, 1 = Gestehen)", 0, 2);
                    break;

                case BasisStrategie.Kooperieren:
                    aktReaktionUser = VerwaltungKram.EingabeZahlMinMax($"Ihr Gegenüber streitet die Tat ab. Geben Sie die Tat zu? (0 = Abstreiten, 1 = Gestehen)", 0, 2);
                    break;

                case BasisStrategie.Verrat:
                    aktReaktionUser = VerwaltungKram.EingabeZahlMinMax($"Ihr Gegenüber hat die Tat gestanden. Geben Sie die Tat zu? (0 = Abstreiten, 1 = Gestehen)", 0, 2);
                    break;
                }
                int aktReaktionCPU = strategie.Verhoer(reaktionUser);

                //punkte berechnen
                switch (schwere)
                {
                case 0:
                    VerhoerLeichtPunkte(aktReaktionUser, aktReaktionCPU, ref punkte1, ref punkte2);
                    break;

                case 1:
                    VerhoerMittelPunkte(aktReaktionUser, aktReaktionCPU, ref punkte1, ref punkte2);
                    break;

                case 2:
                    VerhoerSchwerPunkte(aktReaktionUser, aktReaktionCPU, ref punkte1, ref punkte2);
                    break;
                }

                //reaktion für den nächsten durchlauf merken
                reaktionUser = aktReaktionUser;
                reaktionCPU  = aktReaktionCPU;
            }

            //ausgabe
            Console.WriteLine($"Benutzer hat {punkte1} Punkte erhalten.");
            Console.WriteLine($"{strategie.Name()} hat {punkte2} Punkte erhalten.");
            if (punkte1 < punkte2)
            {
                Console.WriteLine("Somit hat Benutzer gewonnen.");
            }
            else
            {
                Console.WriteLine("Somit hat {0} gewonnen.", strategie.Name());
            }
        }
        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");
            }
        }