Ejemplo n.º 1
0
        private static void MakeTurn(Player player1, Player player2, Deck deck)
        {
            //give card
            var card = MovementUtil.MakeTurn(player1, player2, deck, null);

            //Check for additional point -> (20 or 40)
            //TODO Idea for modification: Player choose if he wants to call his announce. If has more than one announce can choose which one wants to play.
            if (SixtySixUtil.HasForty(player1.Cards, card, deck))
            {
                SixtySixUtil.CallForty(player1);
                player1.HasTwentyForty.Add(new Card()
                {
                    Suit = card.Suit, Value = card.Value == CardValue.QUEEN ? CardValue.KING : CardValue.QUEEN
                });
            }
            else if (SixtySixUtil.HasTwenty(player1.Cards, card, deck))
            {
                SixtySixUtil.CallTwenty(player1);
                player1.HasTwentyForty.Add(new Card()
                {
                    Suit = card.Suit, Value = card.Value == CardValue.QUEEN ? CardValue.KING : CardValue.QUEEN
                });
            }

            var otherCard = MovementUtil.MakeTurn(player2, player1, deck, card);
            var handScore = (int)card.Value + (int)otherCard.Value;

            deck.ThrownCards.Add(card);
            deck.ThrownCards.Add(otherCard);

            // player1 plays first, so if first card wins, then the first player wins
            if (SixtySixUtil.WinsFirstCard(card, otherCard, deck.TrumpSuit))
            {
                if (!(player1.IsSilent && player2.IsSilent))
                {
                    Console.WriteLine("Winning card {0}", card);
                }
                player1.Score         += handScore;
                player1.HasWonLastHand = true;
                player2.HasWonLastHand = false;
                SixtySixUtil.DrawCard(player1, deck);
                SixtySixUtil.DrawCard(player2, deck);
            }
            else
            {
                if (!(player1.IsSilent && player2.IsSilent))
                {
                    Console.WriteLine("Winning card {0}", otherCard);
                }
                player2.Score         += handScore;
                player2.HasWonLastHand = true;
                player1.HasWonLastHand = false;
                SixtySixUtil.DrawCard(player2, deck);
                SixtySixUtil.DrawCard(player1, deck);
            }
        }
Ejemplo n.º 2
0
        /*
         * Itterative are deals been played until one of the players reach sixty six
         */
        public static Player PlaySixtySix(Player player1, Player player2)
        {
            var deck = CardsDeckUtil.InitializeDeck();

            player1.HasWonLastDeal = true;

            CardsDeckUtil.ShuffleDeck(deck); //we first shuffle the deck
            do
            {
                player1.ResetPlayerAfterDeal();
                player2.ResetPlayerAfterDeal();

                if (player1.HasWonLastDeal)
                {
                    var splitIndex = MovementUtil.GetDeckSplittingIndex(player2);
                    CardsDeckUtil.SplitDeck(deck, splitIndex); //one of the players should split the deck
                    player1.HasWonLastHand = true;
                    player2.HasWonLastHand = false;
                    PlayOneDeal(deck, player1, player2);
                }
                else if (player2.HasWonLastDeal)
                {
                    var splitIndex = MovementUtil.GetDeckSplittingIndex(player1);
                    CardsDeckUtil.SplitDeck(deck, splitIndex); //one of the players should split the deck
                    player2.HasWonLastHand = true;
                    player1.HasWonLastHand = false;
                    PlayOneDeal(deck, player2, player1);
                }
                else
                {
                    //Should not enter here
                    PlayOneDeal(deck, player1, player2);
                }
            }while (player1.WinsCount < Constants.TOTAL_PLAYS_FOR_WIN && player2.WinsCount < Constants.TOTAL_PLAYS_FOR_WIN);

            if (player1.WinsCount >= Constants.TOTAL_PLAYS_FOR_WIN)
            {
                if (!player1.IsSilent)
                {
                    Console.WriteLine("You has won!!! Result is: {0} to {1}.", player1.WinsCount, player2.WinsCount);
                }

                return(player1);
            }
            else
            {
                if (!player2.IsSilent)
                {
                    Console.WriteLine("AI player has won!!! Result is: {0} to {1}.", player2.WinsCount, player1.WinsCount);
                }
                return(player2);
            }
        }