Exemple #1
0
        /// <summary>
        /// Hit
        /// </summary>
        /// <param name="HandNum">Player Hand num</param>
        public static void Hit(int HandNum)
        {
            BlackjackHand playerHandNum = PlayerHands[HandNum];

            /*
             * // if the score is atlest 21
             * if (playerHandNum.Score > 21 || playerHandNum.Score == 21) {
             *  // Is standing automaticaly True
             *  playerHandNum.IsStanding = true;
             * } else {
             *  playerHandNum.IsStanding = false;
             * }
             */

            // draw one Card
            playerHandNum.AddCard(_deck.DealOneCard());


            if (playerHandNum.Score > 21 || playerHandNum.Score == 21)
            {
                // Is standing automaticaly True
                playerHandNum.IsStanding = true;
            }
            else
            {
                playerHandNum.IsStanding = false;
            }
        }
Exemple #2
0
        /// <summary>
        /// Instantiates all the games variables, used in the setup function. Sets hands, deck and discard
        /// </summary>
        private static void DealInitial()
        {
            List <Card> hand1 = deck.DealCards(8);
            List <Card> hand2 = deck.DealCards(8);

            discard.AddCard(deck.DealOneCard());
            playerHand = new Hand(hand1);
            compHand   = new Hand(hand2);
            SetLegalMove(discard.GetLastCardInPile());
        }
        /// <summary>
        /// Initialise Tableau
        /// </summary>
        /// <param name="amountOfCards"></param>
        /// <returns></returns>
        //Sets a single table at the start of the game
        private static CardPile TableauInitialise(int amountOfCards)
        {
            CardPile tableau = new CardPile();

            for (int i = 0; i < amountOfCards; i++)
            {
                tableau.Add(drawPile.DealOneCard());
            }
            return(tableau);
        }
Exemple #4
0
        //Deal Cards
        public void DealCards()
        {
            const int CARDS_DEALT = 8;

            for (int i = 0; i < CARDS_DEALT; i++)
            {
                playerHand.AddCard(drawPile.DealOneCard());
                computerHand.AddCard(drawPile.DealOneCard());
            }
        }
Exemple #5
0
 /// <summary>
 /// Attempts to draw a Card into the given Hand.
 /// </summary>
 /// <param name="hand">Hand</param>
 /// <param name="opponentHand">Opponent's hand</param>
 /// <returns>Returns an ActionResult based on the normal rules of the game.</returns>
 private static ActionResult DrawCard(Hand hand, Hand opponentHand)
 {
     if (IsHandPlayable(hand) || hand.GetCount() >= FULL_HAND)
     {
         return(ActionResult.CannotDraw);
     }
     else if (!IsDrawPileEmpty)
     {
         hand.AddCard(_drawPile.DealOneCard());
         if (IsCardPlayable(hand.GetCard(hand.GetCount() - 1)))
         {
             return(ActionResult.DrewPlayableCard);
         }
         else
         {
             if (hand.GetCount() >= FULL_HAND)
             {
                 IsUserTurn = !IsUserTurn;
                 if (opponentHand.GetCount() >= FULL_HAND && !IsHandPlayable(opponentHand))
                 {
                     while (!IsHandPlayable(opponentHand))
                     {
                         while (_discardPile.GetCount() != 0)
                         {
                             _drawPile.AddCard(_discardPile.DealOneCard());
                         }
                         _drawPile.ShufflePile();
                         _discardPile.AddCard(_drawPile.DealOneCard());
                     }
                     return(ActionResult.DrewAndResetPiles);
                 }
                 else
                 {
                     return(ActionResult.DrewAndNoMovePossible);
                 }
             }
             else
             {
                 return(ActionResult.DrewUnplayableCard);
             }
         }
     }
     else
     {
         while (_discardPile.GetCount() != 0)
         {
             _drawPile.AddCard(_discardPile.DealOneCard());
         }
         _discardPile.AddCard(_drawPile.DealOneCard());
         return(ActionResult.FlippedDeck);
     }
 }
        /// <summary>
        /// Attempts to draw a Card into the given Hand.
        /// </summary>
        /// <param name="hand"></param>
        /// <returns></returns>
        private static ActionResult DrawCard(Hand hand)
        {
            Hand otherHand;

            if (IsUserTurn)
            {
                otherHand = ComputerHand;
            }
            else
            {
                otherHand = UserHand;
            }



            if (IsHandPlayable(hand) == true)
            {
                return(ActionResult.CannotDraw);
            }
            else if ((IsDrawPileEmpty == true) && (IsHandPlayable(hand) == false))
            {
                foreach (Card card in _discardPile.DealCards(_discardPile.GetCount()))
                {
                    _drawPile.AddCard(card);
                }
                _discardPile.AddCard(_drawPile.DealOneCard());
                return(ActionResult.FlippedDeck);
            }
            hand.AddCard(_drawPile.DealOneCard());
            if (hand.GetCount() == 13 && (IsHandPlayable(hand) == false))
            {
                if ((IsHandPlayable(hand) == false) && (hand.GetCount() == 13) && (IsHandPlayable(otherHand) == false) && otherHand.GetCount() == 13)
                {
                    IsPlaying  = true;
                    IsUserTurn = !IsUserTurn;
                    return(ActionResult.DrewAndResetPiles);
                }
                else
                {
                    IsUserTurn = !IsUserTurn;
                    IsPlaying  = true;
                    return(ActionResult.DrewAndNoMovePossible);
                }
            }
            else if (IsHandPlayable(hand) == false)
            {
                return(ActionResult.DrewUnplayableCard);
            }

            return(ActionResult.DrewPlayableCard);
        }
Exemple #7
0
        }     // end PlayerHasMove

        /// <summary>
        /// Deals one card to specific hand
        /// </summary>
        /// <param name="who"></param>
        /// <returns></returns>
        public static Card DealOneCardTo(int who)
        {
            // check for empty draw pile
            if (drawPile.GetCount() <= 0)
            {
                drawPile = discardPile;
                DealOneCard();
            }
            drawPile.Shuffle();
            Card card = drawPile.DealOneCard();

            hands[who].Add(card);
            return(card);
        }//end DealOneCard
        private static int[] tableCardsInPlay = new int[8]; //the amount if playable cards per table. index at 1 to allow index to match table number

        //Game Setup
        public static void SetUpGame()
        {
            drawPile      = new CardPile(true);
            discardPile   = new CardPile();
            suitPileOne   = new CardPile();
            suitPileTwo   = new CardPile();
            suitPileThree = new CardPile();
            suitPileFour  = new CardPile();

            drawPile.Shuffle();
            discardPile.Add(drawPile.DealOneCard());
            tableau1 = TableauInitialise(1);
            tableau2 = TableauInitialise(2);
            tableau3 = TableauInitialise(3);
            tableau4 = TableauInitialise(4);
            tableau5 = TableauInitialise(5);
            tableau6 = TableauInitialise(6);
            tableau7 = TableauInitialise(7);

            //sets up the cards in play array, with the index at 1
            tableCardsInPlay[0] = 0;
            for (int i = 1; i < tableCardsInPlay.Length; i++)
            {
                tableCardsInPlay[i] = 1;
            }
        }
        }//end of SetUpGame

        /// <summary>
        /// Deals a card to a specific hand(dealer/player)
        /// </summary>
        /// <param name="who"></param>
        /// <returns>Added card</returns>
        public static Card DealOneCardTo(int who)
        {
            ReplacementCards(1);
            Card deal = cardPile.DealOneCard();

            hands[who].Add(deal);
            return(deal);
        }//end of DealOneCardTo
        public static Card DealOneCardTo(int who)
        {
            Card a = cardpile.DealOneCard();

            hand[who].Add(a);
            CalculateHandTotal(who);
            return(a);
        }
Exemple #11
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="who"></param>
        /// <returns></returns>
        public static Card DealOneCardTo(int who)
        {
            cardPile.Shuffle();
            Card card = cardPile.DealOneCard();

            hands[who].Add(card);
            return(card);
        }//end DealOneCard
Exemple #12
0
        // A randomiser for the cards, thus, knowing cards will be different (when dealing)

        public static void PlayForDeal()
        {
            totalPoints[1] = 0;
            CardPile cardPile = new CardPile(true);

            cardPile.Shuffle();
            hands[1].Add(cardPile.DealOneCard());
        }
Exemple #13
0
        /// <summary>
        /// Deals a card and adds it to the hand
        /// </summary>
        /// <param name="who">Which player</param>
        /// <returns>The dealt card</returns>
        public static Card DealOneCardTo(int who)
        {
            Card card = cardPile.DealOneCard();

            hands[who].Add(card);

            return(card);
        }
Exemple #14
0
        /// <summary>
        /// Draws a new card from the drawPile and adds it to the discardPile
        /// </summary>
        public static void DrawCard()
        {
            if (drawPile.GetCount() == 0)
            {
                ResetDrawPile();
            }

            discardPile.Add(drawPile.DealOneCard());
        }
Exemple #15
0
        public static Card DealOneCardTo(int who)
        {
            Card card1 = new Card();
            Card card2 = new Card();

            if (who == 0)
            {
                card1 = cardPile.DealOneCard();
                hands[0].Add(card1);
                return(card1);
            }
            else
            {
                card2 = cardPile.DealOneCard();
                hands[1].Add(card2);
                return(card2);
            }
        }
        /// <summary>
        /// Deal a card to int who
        /// </summary>
        /// <param name="who"></param>
        /// <returns></returns>
        public static Card DealOneCardTo(int who)
        {
            Card dealtCard = cardPile.DealOneCard();

            hands[who].Add(dealtCard);
            totalPoints[who] = CalculateHandTotal(who);
            return(dealtCard);

            // Returns card
        }
Exemple #17
0
 /// <summary>
 /// Sets up a game of Crazy Eights according to the normal rules.
 /// </summary>
 public static void StartGame()
 {
     // Sets up the initial state
     _drawPile = new CardPile(true);
     _drawPile.ShufflePile();
     UserHand     = new Hand();
     ComputerHand = new Hand();
     IsPlaying    = true;
     IsUserTurn   = true;
     // Deal each hand eight cards
     for (int count = 1; count <= 8; count++)
     {
         UserHand.AddCard(_drawPile.DealOneCard());
         ComputerHand.AddCard(_drawPile.DealOneCard());
     }
     // Get one card to discard pile
     _discardPile = new CardPile();
     _discardPile.AddCard(_drawPile.DealOneCard());
 }
Exemple #18
0
        /// <summary>
        /// Deal a single card to who.
        /// </summary>
        /// <param name="who"></param>
        /// <returns>The Card that has been delt to who.</returns>
        public static Card DealOneCardTo(int who)
        {
            ensurePlayableCardPile();
            Card deltCard = cardPile.DealOneCard();

            sessionFaceValue = deltCard.GetFaceValue();
            addPlayerPoints(who, sessionFaceValue);

            hands[who].Add(deltCard);
            return(deltCard);
        }
Exemple #19
0
 /// <summary>
 /// a
 /// </summary>
 public static void StartGame()
 {
     _canplay   = true;
     IsUserTurn = true;
     _drawPile  = new CardPile(true);
     _drawPile.ShufflePile();
     _discardPile = new CardPile();
     UserHand     = new Hand(_drawPile.DealCards(8));
     ComputerHand = new Hand(_drawPile.DealCards(8));
     _discardPile.AddCard(_drawPile.DealOneCard());
 }
 //Method Draw_Card()
 //Draws the cards from the cardPile.
 public static bool Draw_Card()
 {
     if (drawPile.GetCount() == 0)
     {
         return(false);
     }
     else
     {
         discardPile.Add(drawPile.DealOneCard());
         return(true);
     }
 }
        public void TestDealOneCardAfterAddingCards()
        {
            CardPile pile = new CardPile();

            pile.AddCard(new Card(Suit.Spades, FaceValue.Ace));
            pile.AddCard(new Card(Suit.Clubs, FaceValue.Queen));
            pile.AddCard(new Card(Suit.Clubs, FaceValue.Four));

            Assert.IsTrue(
                pile.DealOneCard().Equals(new Card(Suit.Spades, FaceValue.Ace))
                );
        }
Exemple #22
0
 /// <summary>
 /// Sets up the solitare game from beginning
 /// </summary>
 public static void SetupGame()
 {
     deck = new CardPile(true);
     deck.ShufflePile();
     for (int i = 0; i < numOfHands; i++)
     {
         playRevealed[i] = i;
         Hand temp = new Hand(deck.DealCards(i + 1));
         playHands.Add(temp);
     }
     current.AddCard(deck.DealOneCard());
 }
Exemple #23
0
        static int maxHandSize = 13; //maximum hand size

        /// <summary>
        /// Sets up the game from the starting point, 8 cards per player,
        /// and a card added to the discard deck
        /// </summary>
        public static void SetupGame()
        {
            deck = new CardPile(true);
            deck.ShufflePile();
            discard = new CardPile();
            discard.AddCard(deck.DealOneCard());
            int startHand = 8;

            playerHand = new Hand(deck.DealCards(startHand));
            compHand   = new Hand(deck.DealCards(startHand));
            legalMove  = discard.GetLastCardInPile();
        }
Exemple #24
0
        //Reset the Draw Pile on Empty
        public static CardPile ResetDrawPile(CardPile discardPile)
        {
            //declare new cardpile
            CardPile drawPile = new CardPile();

            //go through discardpile in reverse order adding the cards to drawPile
            for (int i = 0; i < discardPile.GetCount(); i++)
            {
                drawPile.AddCard(discardPile.DealOneCard());
            }
            //return reversed pile for Draw Pile
            return(drawPile);
        }
        }// End PlayForDealer

        /// <summary>
        /// Deals one card from the deck to the hand of "who" and returns that card
        /// </summary>
        /// <param name="who">int: index of dealer or player</param>
        /// <returns>Card: c - the dealt card</returns>
        public static Card DealOneCardTo(int who)
        {
            // Create a new deck and shuffle if it is empty
            if (cardPile.GetCount() == 0)
            {
                cardPile = new CardPile(true);
                cardPile.Shuffle();
            }

            // Deal one card and add it to the player's hand
            Card c = cardPile.DealOneCard();

            hands[who].Add(c);
            return(c);
        }// End DealOneCardTo
Exemple #26
0
        /// <summary>
        /// make a new round
        /// </summary>
        /// <param name="initialBet"> The bet </param>
        public static void NewRound(int initialBet)
        {
            // make a full deck and shuffle it
            _deck = new CardPile(true);
            _deck.ShufflePile();

            // reduce the player fund
            PlayerFunds -= initialBet;


            DealerHand = new BlackjackHand();

            // make a new player hand
            PlayerHands = new List <BlackjackHand>();
            PlayerHands.Add(new BlackjackHand(initialBet));


            // deals  2 card to the player and the dealer
            for (int i = 0; i < 2; i++)
            {
                PlayerHands[0].AddCard(_deck.DealOneCard());
                DealerHand.AddCard(_deck.DealOneCard());
            }
        }
        } // end SetUpGame

        /// <summary>
        /// Deals one card from cardPile to the hand of who and returns that card.
        /// </summary>
        /// <param name="who">The index of the person in the hands array to be dealt to</param>
        /// <returns>Returns the card dealt</returns>
        public static Card DealOneCardTo(int who)
        {
            Card card;

            // Move this to method of its own
            // Create new deck of cards if the pile is empty
            if (cardPile.GetCount() == 0)
            {
                cardPile = new CardPile(true);
                cardPile.Shuffle();
            }

            // Deal card to person
            card = cardPile.DealOneCard();
            hands[who].Add(card);

            return(card);
        } // end DealOneCardTo
 public static void Hit(Player player)
 {
     if (_status == Status.In_Progress)
     {
         Card newCard = _deck.DealOneCard();
         if (player == Player.Player)
         {
             _playerHand.AddCard(newCard);
             if (GetScore(Player.Player) > 21)
             {
                 return Status.
             }
         }
         else if (player == Player.Dealer)
         {
             _dealerHand.AddCard(newCard);
         }
     }
 }
 //Method SetUpGame()
 //This method sets up the Solitaire game everytime initially.
 public static void SetUpGame()
 {
     drawPile        = new CardPile(true);
     discardPile     = new CardPile();
     tableauPiles[0] = new Hand();
     tableauPiles[1] = new Hand();
     tableauPiles[2] = new Hand();
     tableauPiles[3] = new Hand();
     tableauPiles[4] = new Hand();
     tableauPiles[5] = new Hand();
     tableauPiles[6] = new Hand();
     suitPiles[0]    = new CardPile();
     suitPiles[1]    = new CardPile();
     suitPiles[2]    = new CardPile();
     suitPiles[3]    = new CardPile();
     drawPile.Shuffle();
     for (int i = 0; i < 7; i++)
     {
         for (int j = 0; j < i + 1; j++)
         {
             tableauPiles[i].Add(drawPile.DealOneCard());
         }
     }
 }
Exemple #30
0
        /// <summary>
        /// a
        /// </summary>
        /// <returns></returns>
        public static ActionResult UserDrawCard()
        {
            if (IsPlaying == false)
            {
                throw new System.ArgumentException("This game is not start!");
            }
            if (IsUserTurn == false)
            {
                throw new System.ArgumentException("This is not your turn!");
            }


            if (TopDiscard.GetFaceValue() == FaceValue.Eight)
            {
                return(ActionResult.CannotDraw);
            }

            foreach (Card c in UserHand)
            {
                if (c.GetFaceValue() == TopDiscard.GetFaceValue() || c.GetSuit() == TopDiscard.GetSuit())
                {
                    return(ActionResult.CannotDraw);
                }
            }

            if (_drawPile.GetCount() == 0)
            {
                _discardPile.Reverse();
                while (_discardPile.GetCount() > 1)
                {
                    _drawPile.AddCard(_discardPile.DealOneCard());
                }
                return(ActionResult.FlippedDeck);
            }

            Card drawCard = _drawPile.DealOneCard();

            UserHand.AddCard(drawCard);

            if (drawCard.GetFaceValue() == TopDiscard.GetFaceValue() || drawCard.GetSuit() == TopDiscard.GetSuit())
            {
                return(ActionResult.DrewPlayableCard);
            }
            else
            {
                if (UserHand.GetCount() == 13)
                {
                    IsUserTurn = false;
                    if (ComputerHand.GetCount() == 13)
                    {
                        return(ActionResult.DrewAndResetPiles);
                    }
                    else
                    {
                        return(ActionResult.DrewAndNoMovePossible);
                    }
                }
                else
                {
                    return(ActionResult.DrewUnplayableCard);
                }
            }
        }