Example #1
0
        private void Play()
        {
            Gamelog = new Logger("LOG von Spiel zwischen " + Player1.Username + " und " + Player2.Username);

            for (int i = 0; i < MaxRounds; i++)
            {
                Console.WriteLine("-------------------------------------------------\n");
                Gamelog.AddEntry(String.Format("Spielrunde: {0}", i + 1));
                Console.WriteLine("Spielrunde: {0}", i + 1);
                Console.WriteLine("Anzahl Karten Spieler 1: " + Player1.Deck.Count);
                Console.WriteLine("Anzahl Karten Spieler 2: " + Player2.Deck.Count);
                ICard chosenCardP1 = Player1.PickCardFromDeck();
                ICard chosenCardP2 = Player2.PickCardFromDeck();

                Console.WriteLine("\nGewählte Karten: ");
                Console.WriteLine("Spieler 1: {0}, {1}, {2}", chosenCardP1.Name, chosenCardP1.Damage, chosenCardP1.ElementType);
                Console.WriteLine("Spieler 2: {0}, {1}, {2}", chosenCardP2.Name, chosenCardP2.Damage, chosenCardP2.ElementType);

                Gamelog.AddEntry(String.Format("{0}: {1}, {2}, {3}", Player1.Username, chosenCardP1.Name, chosenCardP1.Damage, chosenCardP1.ElementType));
                Gamelog.AddEntry(String.Format("{0}: {1}, {2}, {3}", Player2.Username, chosenCardP2.Name, chosenCardP2.Damage, chosenCardP2.ElementType));

                //HasPlayer1WonRound?
                // YES: player1 bekommt card p2 von player2! (zu deck von player1 hinzufügen: card p2), (aus deck von player2 entfernen: card p2)
                // NO: player2 bekommt card p1 von player1! (zu deck von player2 hinzufügen: card p1), (aus deck von player1 entfernen: card p1)

                // can return 3 cases: 3 values present that: if 1 returns
                int result = HasPlayer1WonRound(chosenCardP1, chosenCardP2);

                switch (result)
                {
                case 1:
                    Gamelog.AddEntry("" + Player1.Username + " gewinnt.");
                    Console.WriteLine("Spieler 1 gewinnt.");
                    Player1.AddCardToDeck(chosenCardP2);
                    Player2.RemoveCardFromDeck(chosenCardP2);
                    break;

                case 2:
                    Gamelog.AddEntry("" + Player2.Username + " gewinnt.");
                    Console.WriteLine("Spieler 2 gewinnt.");
                    Player2.AddCardToDeck(chosenCardP1);
                    Player1.RemoveCardFromDeck(chosenCardP1);
                    break;

                case 3:
                    Gamelog.AddEntry("Unentschieden.");
                    Console.WriteLine("Unentschieden.");
                    break;
                }


                // Deck is updated

                // Game ends if one user has no cards
                if (Player1.Deck.IsNullOrEmpty() || Player2.Deck.IsNullOrEmpty())
                {
                    if (Player2.Deck.IsNullOrEmpty())
                    {
                        Gamelog.AddEntry("SPIELENDE. " + Player2.Username + " hat keine Karten mehr. " + Player1.Username + " hat das Battle gewonnen.");
                        Gamelog.Winner = Player1.Username;
                        Console.WriteLine("Spieler 1 hat das Spiel gewonnen.");
                        Winner = Player1;
                    }
                    else
                    {
                        Gamelog.AddEntry("SPIELENDE. " + Player1.Username + " hat keine Karten mehr. " + Player2.Username + " hat das Battle gewonnen.");
                        Gamelog.Winner = Player2.Username;
                        Console.WriteLine("SPIELENDE. Spieler 1 hat keine Karten mehr. Spieler 2 hat das Spiel gewonnen.");
                        Winner = Player2;
                    }
                    EndGame();
                    Console.WriteLine("\n-------------------------------------------------\n");
                    return;
                }
                Console.WriteLine("\n-------------------------------------------------\n");
            }

            // if there is no final result after maxRound --> DRAW!

            EndGame();
            // Winner is null --> DRAW
            Gamelog.AddEntry("Das Spiel ist unentschieden ausgegangen!");
        }