/// <summary> /// Get the game result. This returns an EndResult value /// </summary> /// <returns></returns> public EndResult GetHandResult(Hand playerHand) { EndResult endState; var dealerHand = Dealer.Hands[0]; // Check for blackjack if (playerHand.NumCards == 2 && playerHand.HasBlackJack() && dealerHand.NumCards == 2 && dealerHand.HasBlackJack()) { endState = EndResult.Push; playerHand.Push(); } else if (playerHand.NumCards == 2 && playerHand.HasBlackJack()) { endState = EndResult.PlayerBlackJack; playerHand.WinBlackjack(); } else if (dealerHand.NumCards == 2 && dealerHand.HasBlackJack()) { endState = EndResult.DealerBlackJack; playerHand.Lose(); } // Check if the dealer has bust else if (dealerHand.HasBust()) { endState = EndResult.DealerBust; playerHand.Win(); } else if (dealerHand.CompareFaceValue(playerHand) > 0) { //dealer wins endState = EndResult.DealerWin; playerHand.Lose(); } else if (dealerHand.CompareFaceValue(playerHand) == 0) { // push endState = EndResult.Push; playerHand.Push(); } // Check if the dealer has bust else if (playerHand.HasBust()) { endState = EndResult.PlayerBust; playerHand.Lose(); } else { // player wins endState = EndResult.PlayerWin; playerHand.Win(); } return endState; }