Example #1
0
        private static void battleRound()
        {
            Player      winner         = null;
            List <Card> cardsOnTable   = new List <Card>();
            List <Card> p1CardsOnTable = new List <Card>();
            List <Card> p2CardsOnTable = new List <Card>();

            Player p1 = players[0];
            Player p2 = players[1];

            int round = 1;

            while (true)
            {
                p1CardsOnTable.Clear();
                p2CardsOnTable.Clear();
                Card   p1Card      = null;
                Card   p2Card      = null;
                Player roundWinner = null;

                if (!p1.hasCards())
                {
                    winner = players[1];
                    break;
                }
                if (!p2.hasCards())
                {
                    winner = players[0];
                    break;
                }


                p1Card = p1.getCardFromPlayer();
                p2Card = p2.getCardFromPlayer();

                p1CardsOnTable.Add(p1Card);
                p2CardsOnTable.Add(p2Card);

                Console.WriteLine($"{p1.Name} ( {p1.CardsCount} cards) draws: {p1Card.Name}");
                Console.WriteLine($"{p2.Name} ( {p2.CardsCount} cards) draws: {p2Card.Name}");

                if (p1Card.Power > p2Card.Power)
                {
                    roundWinner = p1;
                }
                else if (p1Card.Power < p2Card.Power)
                {
                    roundWinner = p2;
                }
                else
                {
                    // WAR CASE
                    Console.WriteLine("W A R ! ! !");
                    while (true)
                    {
                        try
                        {
                            p1CardsOnTable.Add(p1.getCardFromPlayer());
                            p1CardsOnTable.Add(p1.getCardFromPlayer());
                            p1CardsOnTable.Add(p1.getCardFromPlayer());
                        }
                        catch (Exception ex) {; }

                        try
                        {
                            p2CardsOnTable.Add(p2.getCardFromPlayer());
                            p2CardsOnTable.Add(p2.getCardFromPlayer());
                            p2CardsOnTable.Add(p2.getCardFromPlayer());
                        }
                        catch (Exception ex) {; }

                        p1CardsOnTable.RemoveAll(el => el == null);
                        p2CardsOnTable.RemoveAll(el => el == null);

                        Card p1LastCard = p1CardsOnTable[p1CardsOnTable.Count - 1];
                        Card p2LastCard = p2CardsOnTable[p2CardsOnTable.Count - 1];
                        if (p1LastCard.Power > p2LastCard.Power)
                        {
                            roundWinner = p1;
                            break;
                        }
                        else if (p1LastCard.Power < p2LastCard.Power)
                        {
                            roundWinner = p2;
                            break;
                        }
                    }
                }


                Console.WriteLine($"Round {round++}: {roundWinner.Name} takes all!!!");
                p1CardsOnTable.ForEach(c => roundWinner.addCardToPlayerDeck(c));
                p2CardsOnTable.ForEach(c => roundWinner.addCardToPlayerDeck(c));

                if (round >= 1000)
                {
                    break;
                }
            }
            if (winner != null)
            {
                Console.Clear();
                Console.WriteLine($"{winner.Name} is W I N S the game in {round} turns!!! ");
            }
            else
            {
                Console.WriteLine("DEUCE!!!   More than 1000 rouns");
            }
        }