Ejemplo n.º 1
0
        public void PlayerPlay(Card c, Suit selectedUserSuit)
        {
            if (GameIsPlaying)
            {
                ResetMessage();
                Card topCardOnTable   = HandTable[HandTable.CountCardsInHand - 1];
                Card selectedUserCard = c;

                if (IsRegularCard(selectedUserCard, topCardOnTable))
                {
                    HandTable.AddCard(c);
                    HandPlayer.RemoveCard(c);
                    PlayerActive = false;
                    IsWinner();
                }
                else if (IsWildCard(selectedUserCard))
                {
                    selectedUserCard.Suit = selectedUserSuit;
                    HandTable.AddCard(selectedUserCard);
                    HandPlayer.RemoveCard(HandPlayer.GetCardIndex(selectedUserCard));
                    PlayerActive = false;
                    IsWinner();
                }
                else
                {
                    Messages     = $"You cannot play the {selectedUserCard.FaceValue} of {selectedUserCard.Suit} now";
                    PlayerActive = true;
                }
            }
        }
Ejemplo n.º 2
0
        private void RedealFromPile()
        {
            Deck.ReuseDeckFromTablePile(HandTable);
            Deck.Shuffle();

            for (int i = 0; i < HandTable.CountCardsInHand - 1; i++)
            {
                HandTable.RemoveCard(i);
            }
        }
Ejemplo n.º 3
0
        public void ComputerPlay()
        {
            if (!PlayerActive && GameIsPlaying)
            {
                ResetMessage();
                Card topCardOnTable = HandTable[HandTable.CountCardsInHand - 1];

                Card c;

                for (int i = 0; i < HandComputer.CountCardsInHand; i++)
                {
                    c = HandComputer[i];

                    if (IsRegularCard(c, topCardOnTable))
                    {
                        HandTable.AddCard(c);
                        HandComputer.RemoveCard(c);
                        IsWinner();
                        PlayerActive = true;
                        return;
                    }
                }

                for (int i = 0; i < HandComputer.CountCardsInHand; i++)
                {
                    c = HandComputer[i];

                    if (IsWildCard(c))
                    {
                        int cardIndex = HandComputer.GetCardIndex(HandComputer[i]);

                        Random rnd = new Random();

                        Suit suit = (Suit)rnd.Next(0, Enum.GetValues(typeof(Suit)).Length);
                        c.Suit = suit;

                        HandTable.AddCard(c);
                        HandComputer.RemoveCard(cardIndex);
                        IsWinner();
                        PlayerActive = true;
                        return;
                    }
                }

                //IF NO CARD MATCHES TAKE A CARD
                if (Deck.DeckCount > 0)
                {
                    if (HandComputer.CountCardsInHand <= 11)
                    {
                        Card topCard = Deck.DrawOneCard();
                        HandComputer.AddCard(topCard);
                        //Recursion => Repeat all code above when draw new card
                        ComputerPlay();
                        IsWinner();
                    }
                    else
                    {
                        PlayerActive = true;
                        Messages     = "Computer does not have any matching card. \n Your turn";
                    }
                }
                else
                {
                    RedealFromPile();
                    ComputerPlay();
                }
            }
        }