/// <summary> /// deal cards to each hand in play /// </summary> private void DealHands() { // check for bet if (playerHuman.Bet > 0) { // update instruction text lblDeal.Text = "Press R to deal"; // initialize hands playerHand = new Hand(); dealerHand = new Hand(); botHand = new Hand(); // show hand value display if (lblHand.Visibility == Visibility.Hidden || lblHandBot.Visibility == Visibility.Hidden || lblHandDealer.Visibility == Visibility.Hidden) { lblHand.Visibility = Visibility.Visible; lblHandBot.Visibility = Visibility.Visible; lblHandDealer.Visibility = Visibility.Visible; } // add 2 cards to each hand for (int i = 0; i < 2; i++) { // add card botHand.AddCard(mainDeck.Draw()); playerHand.AddCard(mainDeck.Draw()); dealerHand.AddCard(mainDeck.Draw()); } // update hand value display lblHand.Content = PlayerDisplay(); lblHandBot.Content = botHand.GetBestHand().ToString(); // only give hand value of 1 card lblHandDealer.Content = dealerHand.ConvertFaceValue(dealerHand.Cards[0]); // check the first card for ace, if true update possible hand values if (dealerHand.Cards[0].FaceValue == Enums.FaceValue.ace) lblHandDealer.Content += "/11"; // hide cards from last round HideCards(); // update card displays ConvertCards(playerHand, Enums.Participant.Player); ConvertCards(botHand, Enums.Participant.AI); ConvertCards(dealerHand, Enums.Participant.Dealer); // reveal only 1 card ShowCardBack(imgDealerHand, 1); // check for win condition if (playerHand.HasBlackJack()) { AITurn(); CollectChips(CheckWin(playerHand), playerHuman); } } else MessageBox.Show("Please place your bet"); }
/// <summary> /// calculates the end result state for input hand against dealer /// </summary> /// <param name="hand">hand to calculate against dealer</param> /// <returns></returns> private Enums.EndResult CheckWin(Hand hand) { // return value Enums.EndResult result = Enums.EndResult.Waiting; // hand values int playerHandValue = hand.GetBestHand(); int dealerHandValue = dealerHand.GetBestHand(); // win or push, player has blackjack if (hand.HasBlackJack()) { // dealer has blackjack aswell if (dealerHand.HasBlackJack()) result = Enums.EndResult.Push; else result = Enums.EndResult.PlayerBlackJack; } // dealer blackjack else if (dealerHand.HasBlackJack()) result = Enums.EndResult.DealerBlackJack; // push, equal hand value else if (playerHandValue == dealerHandValue) result = Enums.EndResult.Push; // loss, dealer has greater hand value w/o bust else if (dealerHandValue <= 21 && playerHandValue < dealerHandValue) result = Enums.EndResult.DealerWin; // loss, player bust else if (playerHandValue > 21) result = Enums.EndResult.PlayerBust; // win, player has greater hand value w/o bust else if (playerHandValue <= 21 && playerHandValue > dealerHandValue) result = Enums.EndResult.PlayerWin; // win, dealer bust else if (dealerHandValue > 21) result = Enums.EndResult.DealerBust; return result; }