public void PassToDealer()
 {
     AdjustGameState(GameState.DealerPlays);
     DealerHand.TurnAllCardsFaceUp();
     AdjustGameState();
     LetDealerFinalize();
 }
Exemplo n.º 2
0
        public void NextGame()
        {
            GameMode = Results.Bet;
            PlayerHand.Clear();
            DealerHand.Clear();
            PlayerScore = 0;
            DealerScore = 0;
            _playerAces = 0;
            _dealerAces = 0;
            Bet         = 0;

            PullPlayerCard();
            PullDealerCard();
            PullDealerCard();

            //Check if player has blackjack
            if (PlayerScore == 21)
            {
                Blackjack();
            }

            //Check if insurance applies
            if (DealerScore == 11)
            {
                InsuranceBet();
            }
        }
Exemplo n.º 3
0
        public void Stay()
        {
            round_replay.PushAction(0, Player.Hand.GetHighValue(), DealerHand.Cards[1].NumValue);
            while (DealerShouldHit())
            {
                DealerHand.AddCard(Deck.DrawCard());
            }

            if (DealerHand.HasBlackJack() && !Player.Hand.HasBlackJack())
            {
                EndRound(false);
            }
            else if (DealerHand.GetHighValue() > 21)
            {
                EndRound(true);
            }
            else if (Player.Hand.GetHighValue() >= DealerHand.GetHighValue())
            {
                EndRound(true);
            }
            else
            {
                EndRound(false);
            }
        }
        private void DealHands()
        {
            if (CardsInDeck < 10)
            {
                DealHandsButtonVisible   = false;
                ShuffleDeckButtonVisible = true;
                MessageBoard             = "There are not enough cards\n" +
                                           "in the deck to play the hand.";
            }
            else
            {
                PlayerHand.clearHand();
                DealerHand.clearHand();
                PlayerHand.AddCard(MyDeck.pick());
                PlayerHand.AddCard(MyDeck.pick());
                DealerHand.AddCard(MyDeck.pick());
                DealerHand.AddCard(MyDeck.pick());

                HitButtonVisible         = true;
                StayButtonVisible        = true;
                ShuffleDeckButtonVisible = false;
                DealHandsButtonVisible   = false;

                CardsInDeck     = MyDeck.CardsLeft();
                DealerHandValue = 0;
                PlayerHandValue = 0;
                MessageBoard    = "";
            }
        }
Exemplo n.º 5
0
        /// <summary>Action taking place on the Dealer's turn.</summary>
        private void DealerAction()
        {
            bool keepGoing = true;

            while (keepGoing)
            {
                if (DealerHand.ActualValue == 21)
                {
                    keepGoing = false;
                }
                else if (DealerHand.ActualValue >= 17)
                {
                    if (DealerHand.ActualValue > 21 && DealerHand.HasAceEleven())
                    {
                        ConvertAce(DealerHand);
                    }
                    else
                    {
                        keepGoing = false;
                    }
                }
                else
                {
                    DealCard(DealerHand);
                }
            }
        }
Exemplo n.º 6
0
 public bool DealerShouldHit() //Dealer stays on all 17's
 {
     if (DealerHand.GetHighValue() < 17)
     {
         return(true);
     }
     return(false);
 }
Exemplo n.º 7
0
 public void PlayRound()
 {
     DiscardHands();
     DealerHand.SetHand(DealHand());
     Player.DealHand(DealHand());
     round_replay.ClearActions();
     CanAct = true;
 }
Exemplo n.º 8
0
        public void PassToDealer()
        {
            AdjustGameState();
            DealerHand.TurnAllCardsFaceUp();

            AddCardToHand(DealerHand, true);
            AdjustGameState();
        }
Exemplo n.º 9
0
 //private int roundNumber = 0; //internal tracking
 public BlackJack()
 {
     cardDeck   = new CardDeck();
     playerHand = new PlayerHand();
     dealerHand = new DealerHand();
     cardDeck.shuffle();
     //Play();
 }
Exemplo n.º 10
0
        /// <summary>
        /// Dealer Play
        /// </summary>
        /// <returns>The result </returns>
        public static List <Result> DealerPlay()
        {
            List <Result> result = new List <Result>();

            bool drawCard = true;

            // Check if player gone Bust or not
            if (PlayerHands[0].Score > 21)
            {
                drawCard = false;
            }

            if (PlayerHands[0].HasSurrendered)   // player surrender
            {
                result.Add(Result.Surrendered);
                // player get half the bet
                PlayerFunds += PlayerHands[0].Bet / 2;
            }

            // Draw Card for Dealer
            if (!PlayerHands[0].HasSurrendered && drawCard)
            {
                while (DealerHand.Score < 17)
                {
                    DealerHand.AddCard(_deck.DealOneCard());
                }
            }

            // Check Player Result
            for (int x = 0; x < PlayerHands.Count && !PlayerHands[0].HasSurrendered; x++)
            {
                if (DealerHand.Score > 21 || (PlayerHands[x].Score > DealerHand.Score &&
                                              PlayerHands[x].Score <= 21))// player win

                {
                    result.Add(Result.Won);
                    // player gain twice their bet
                    PlayerFunds += PlayerHands[x].Bet * 2;
                }
                else if (PlayerHands[x].Score > 21)    // player bust
                {
                    result.Add(Result.Bust);
                }
                else if (PlayerHands[x].Score == DealerHand.Score)    // player Push

                {
                    result.Add(Result.Push);
                    // player get their bet back
                    PlayerFunds += PlayerHands[x].Bet;
                }
                else if (PlayerHands[x].Score < DealerHand.Score)     // player lost
                {
                    result.Add(Result.Lost);
                }
            }

            return(result);
        }
Exemplo n.º 11
0
        public List <int> GetState()
        {
            this.PlayerHand.Sort();
            List <int> State = new List <int>();

            State.Add(DealerHand.First().value);     //only first card
            State.AddRange(PlayerHand.ConvertAll(card => card.value));
            return(State);
        }
Exemplo n.º 12
0
 public void NewGame()
 {
     EndVisible = false;
     _hold      = false;
     DealerHand.Clear();
     PlayerHand.Clear();
     DealerHand.Add(PullCard());
     PlayerHand.Add(PullCard());
     UpdateScores();
 }
Exemplo n.º 13
0
        public void InitMyData()
        {
            shoe        = new Shoe();
            dealerHand  = new DealerHand();
            myHand      = new MyHand();
            advStrategy = new AdvStrategy();

            this.Location = new Point(10, 100);

            UpdateBoxCards();
        }
Exemplo n.º 14
0
 public void BlackJackCheck()
 {
     if (Player.Hand.HasBlackJack())
     {
         EndRound(true);
     }
     if (DealerHand.HasBlackJack())
     {
         EndRound(false);
     }
 }
Exemplo n.º 15
0
 public Dealer()
 {
     Console.WriteLine("blabla");
     _CardDeck = new CardDeck();
     Hand      = new DealerHand()
     {
         CardsInHand = new List <Card>()
         {
             Hit()
         }
     };
 }
Exemplo n.º 16
0
        public void DealCard(Hand hand, bool faceup)
        {
            var card = cardDeck.Draw();     // Draw a card from the deck

            card.FaceUp = faceup;           // Face it up or down
            if (hand == DealerHand && DealerHand.HandTotal() >= 17)
            {
                return;
            }

            hand.Cards.Add(card);                 // Give it the player's hand
        }
Exemplo n.º 17
0
 // dealer hit
 public List <Card> Hit(Card card)
 {
     DealerHand.Add(card);
     if (DealerHand.Count == 1)
     {
         dealerNotify(card, true);
     }
     else
     {
         dealerNotify(card, false);
     }
     return(DealerHand);
 }
Exemplo n.º 18
0
    public void Stand()
    {
        // stop adding cards
        // reveal dealer's upside down card
        // dealer starts to hit until 17
        // dealer hand only hits if the player hasn't busted or blackjacked
        // dealer stands when hand val >= 17

        hitBut.interactable   = false;
        standBut.interactable = false;

        dh = GameObject.Find("Dealer hand").GetComponent <DealerHand>();
        checkForDealerHand = true;
    }
Exemplo n.º 19
0
        private static bool PlayGame()
        {
            Deck              MainDeck = Extensions.MakeNew();
            List <Hand>       PlayerHands = new List <Hand>();
            int               playerHandIndex = 0;
            Hand              DealerHand, currentPlayerHand = null;
            bool              playing    = true;
            int               gameState  = 0; //0 for running, 1 for player wins, 2 for tie, 3 for loss
            List <ConsoleKey> validInput = new List <ConsoleKey>()
            {
                ConsoleKey.H, ConsoleKey.D, ConsoleKey.S, ConsoleKey.Spacebar, ConsoleKey.Escape
            };
            List <Action> postInput = new List <Action>()
            {
                () => Hit(ref currentPlayerHand, ref MainDeck), () => DoubleDown(ref currentPlayerHand, ref MainDeck), () => Split(ref currentPlayerHand), () => Stand(ref currentPlayerHand), () => Abort()
            };


            MainDeck.Shuffle();
            PlayerHands.Add(DealHand(MainDeck));
            MainDeck.cards.RemoveRange(0, 2);
            DealerHand = DealHand(MainDeck);
            MainDeck.cards.RemoveRange(0, 2);

            if (DealerHand.Score() == 21) //handle dealer blackjack
            {
                if (PlayerHands[0].Score() == 21)
                {
                    gameState = 2;
                }
                else
                {
                    gameState = 3;
                }
            }

            while (playing)
            {
                int inputIndex = GetPlayerInput(validInput);
                currentPlayerHand = PlayerHands[playerHandIndex];
                postInput[inputIndex]();
                PlayerHands[inputIndex] = currentPlayerHand;
            }



            return(true);
        }
        private void NewGame()
        {
            MyDeck.reset();
            CardsInDeck = MyDeck.CardsLeft();
            PlayerHand.clearHand();
            DealerHand.clearHand();

            ShuffleDeckButtonVisible = true;
            DealHandsButtonVisible   = true;

            DealerHandValue = 0;
            PlayerHandValue = 0;
            PlayerScore     = 0;
            DealerScore     = 0;
            MessageBoard    = "";
        }
Exemplo n.º 21
0
        private void DisplayDealerHand()
        {
            if (MainHandOver && SplitHandOver)
            {
                DealerHand.ClearHidden();
            }
            while (dealerHandContainer.GetChildren().Count > 0)
            {
                dealerHandContainer.RemoveChild(dealerHandContainer.GetChild(0));
            }
            foreach (Card card in DealerHand.CardList)
            {
                dealerHandContainer.AddChild(card);
            }

            LblDealerTotal.Text = DealerHand.TotalValue > 0 ? DealerHand.Value : "";
        }
        private void Stay()
        {
            PlayerHandValue = PlayerHand.handValue();
            DealerHandValue = DealerHand.handValue();

            bool dealerHas5CardsWithValueSmallerThan21 = false;
            int  count = DealerHand.CardsInHand.Count;

            while (!dealerHas5CardsWithValueSmallerThan21 && DealerHandValue < 18)
            {
                DealerHand.AddCard(MyDeck.pick());
                DealerHandValue = DealerHand.handValue();
                count++;
                if (count == 5 && DealerHandValue <= 21)
                {
                    dealerHas5CardsWithValueSmallerThan21 = true;
                }
            }

            string winner = (dealerHas5CardsWithValueSmallerThan21 ||
                             (DealerHandValue >= PlayerHandValue && DealerHandValue <= 21)) ? "Dealer wins!" : "Player wins!";

            if (DealerHandValue == PlayerHandValue && !dealerHas5CardsWithValueSmallerThan21)
            {
                winner = "It's a draw.";
            }

            MessageBoard = $"{winner}";

            if (winner == "Dealer wins!")
            {
                DealerScore++;
            }
            if (winner == "Player wins!")
            {
                PlayerScore++;
            }

            HitButtonVisible         = false;
            StayButtonVisible        = false;
            ShuffleDeckButtonVisible = true;
            DealHandsButtonVisible   = true;
            CardsInDeck = MyDeck.CardsLeft();
        }
Exemplo n.º 23
0
        public string Stand()
        {
            int userTotal   = UserHand.HandTotal();
            int dealerTotal = DealerHand.HandTotal();

            if (userTotal <= 21)
            {
                if (Math.Abs(21 - userTotal) < Math.Abs(21 - dealerTotal))
                {
                    return("user");
                }
            }
            if (userTotal <= 21 && userTotal == dealerTotal)
            {
                return("draw");
            }

            return("dealer");
        }
Exemplo n.º 24
0
        /// <summary>
        /// Dealer hits when player holds
        /// </summary>
        private void DealerHit()
        {
            while (DealerScore <= PlayerScore && DealerScore < 21)
            {
                var task = Task.Run(() =>
                {
                    Thread.Sleep(1000);
                });

                task.ConfigureAwait(true)
                .GetAwaiter()
                .OnCompleted(() =>
                {
                    DealerHand.Add(PullCard());
                    UpdateScores();
                });
            }
            DeclareWinner();
        }
Exemplo n.º 25
0
        private void Dealer17()
        {
            if (!DealerHand.Where(dc => dc.Value == 11).Any())
            {
                return;
            }
            var c = DealCard();

            DealerHand.Add(c);
            DisplayCard(dealersCards, c);
            dealerShown += c.Value;

            if (dealerShown > 21)
            {
                DealerHand.Where(dc => dc.Value == 11).First().Value = 1;
                dealerShown -= 10;
                UpdateDealerShown();
                Thread.Sleep(1000);
            }
        }
Exemplo n.º 26
0
        void DealersTurn()
        {
            ShowFaceDown();
            Thread.Sleep(1500);

            if (dealerShown == 17)
            {
                Dealer17();
            }

            while (dealerShown < 17)
            {
                var c = DealCard();
                DealerHand.Add(c);
                DisplayCard(dealersCards, c);
                dealerShown += c.Value;
                if (dealerShown == 17)
                {
                    Dealer17();
                }
                UpdateDealerShown();
                Thread.Sleep(1000);
            }

            if (dealerShown > 21)
            {
                MessageBox.Show("Dealer Bust", "Player Wins"); AddWin(); gameOver = true; return;
            }
            if (dealerShown <= 21 && playerShown < dealerShown)
            {
                MessageBox.Show("Dealer Wins"); gameOver = true; return;
            }
            if (dealerShown == playerShown)
            {
                MessageBox.Show("No Winner", "Push"); gameOver = true; return;
            }
            if (playerShown <= 21 && playerShown > dealerShown)
            {
                MessageBox.Show("Player Wins"); AddWin(); gameOver = true; return;
            }
        }
Exemplo n.º 27
0
        private void DealCheck()
        {
            int dealerTemp = 0, playerTemp = 0;

            DealerHand.ForEach(c => dealerTemp += c.Value);
            PlayerHand.ForEach(c => playerTemp += c.Value);

            if (dealerTemp == 21)
            {
                ShowFaceDown();
                dealerShown = dealerTemp;;
                playerShown = playerTemp;
                UpdateDealerShown();
                UpdatePlayerShown();

                if (dealerTemp == playerTemp)
                {
                    MessageBox.Show("No Winner", "Push");
                }
                else
                {
                    MessageBox.Show("Dealer Wins", "Blackjack");
                }
                gameOver = true;
            }
            else
            {
                dealerShown = DealerHand[0].Value;
                playerShown = playerTemp;

                UpdatePlayerShown();
                UpdateDealerShown();
                if (playerShown == 21)
                {
                    MessageBox.Show("Player Wins", "Blackjack"); AddWin(); gameOver = true;
                }
            }
        }
Exemplo n.º 28
0
        public DealerHandControl(DealerHand hand, GameController controller, BlackJackForm form) : base(hand, controller, form)
        {
            this.Hand = hand;
            controller.onDealerCardReceived += dealer_onCardReceived;
            lblOutcome.Text    = string.Empty;
            lblOutcome.Visible = false;


            btnDoubleDown.Visible = false;
            btnSplit.Visible      = false;

            btnStand.Visible = false;

            btnHit.Visible = false;



            hand.onDealerBust      += dealer_onBust;
            hand.onDealerBlackjack += dealer_onBlackjack;
            hand.onDealerWinHand   += hand_onWinHand;
            hand.onDealerLoseHand  += hand_onLoseHand;
            hand.onPushHand        += hand_onPushHand;
        }
Exemplo n.º 29
0
        private void DealHands()
        {
            PlayerHand.Add(DealCard());
            DisplayCard(playersCards, PlayerHand.Last());

            DealerHand.Add(DealCard());
            DisplayCard(dealersCards, DealerHand.Last());


            PlayerHand.Add(DealCard());
            DisplayCard(playersCards, PlayerHand.Last());

            DealerHand.Add(DealCard());
            Dispatcher.Invoke(() => dealersCards.Children.Add(new TextEdit()
            {
                Name = "FaceDown"
            }));
            DealCheck();

            if (!gameOver)
            {
                Dispatcher.Invoke(() => { btnHit.IsEnabled = true; btnStand.IsEnabled = true; });
            }
        }
Exemplo n.º 30
0
 public void StartNewGame()
 {
     foreach (var player in Players)
     {
         player.StartNewGame();
     }
     DealerHand = new DealerHand();
 }
Exemplo n.º 31
0
        /// <summary>
        /// Returns a random card and places it in the dealer's hand
        /// </summary>
        public void PullDealerCard()
        {
            Card   tempCard;
            int    randNum;
            int    newValue = 0;
            Random random   = new Random();

            if (_deck.Count == 0)
            {
                GameMode = Results.Shuffle;
                Shuffle();
            }
            else
            {
                randNum = random.Next(0, _deck.Count());

                tempCard = _deck[randNum];
                _deck.Remove(_deck[randNum]);

                DealerHand.Add(tempCard);

                //Update dealer score
                if (tempCard.Rank == 1)
                {
                    _dealerAces++;
                    newValue += 11;
                }
                else if (tempCard.Rank < 11)
                {
                    newValue += tempCard.Rank;
                }
                else if (tempCard.Rank >= 11)
                {
                    newValue += 10;
                }

                //Hold the value of the first card a secret
                if (DealerHand.Count == 1)
                {
                    _hiddenDealerCard = +newValue;
                }
                else
                {
                    DealerScore += newValue;
                }


                //Changes Aces from 11 to 1 if hand is over 21
                if (_dealerAces > 0)
                {
                    int count = 0;

                    while (DealerScore > 21 && count < _dealerAces)
                    {
                        DealerScore -= 10;
                        count++;
                        _dealerAces--;
                    }
                }
            }
        }
Exemplo n.º 32
0
 public BlackjackTable()
 {
     DealerHand = new DealerHand();
     Shoe = new Shoe(6);
 }