Пример #1
0
        private void Stand(Hand h)
        {
            // Only Do if all hand are in standing state.
            if (_player.AllHandsStand())
            {
                var dealersHand = _dealer.GetHands()[0];
                var hands       = _player.GetHands();
                Console.WriteLine("\n_____________________________\n" +
                                  "      S E T T L E M E N T!    ");
                Console.WriteLine("Number of Hands:{0}", hands.Count);
                Console.WriteLine("Total bet is at:{0}", _player.Bet);
                Thread.Sleep(1000);
                _gameUI.ShowAllHands();

                foreach (var hand in hands)
                {// If player's hand is busted or dealer has under 16, no need for the dealer to play any further.
                    int dealersScore;
                    if (hand.ResolveScore() != 0 && dealersHand.ResolveScore() < 17)
                    {
                        dealersScore = DealerPlays();
                        _gameUI.ShowAllHands();
                    }
                    else
                    {
                        dealersScore = dealersHand.ResolveScore();
                    }

                    Console.WriteLine("Dealer has: {0}", dealersHand.GetFinalScore());
                    Console.WriteLine(" and Player has: {0}", hand.GetFinalScore());

                    var playersScore = hand.ResolveScore();
                    // If player has blackjack and dealer doesn't.
                    if (_player.HasBlackJack(hand) && !_dealer.HasBlackJack(dealersHand))
                    {
                        _gameUI.WinByBlackjackMsg();
                        _player.AddToBalance((int)Math.Round(_player.Bet * 1.5));
                    }
                    // If dealer instead has blackjack and player doesn't.
                    else if (_dealer.HasBlackJack(dealersHand) && !_player.HasBlackJack(hand))
                    {
                        _gameUI.LoseByBlackjackMsg();
                        _player.AddToBalance(-1 * _player.Bet);
                    }
                    // If player scores better than dealer.
                    else if (playersScore > dealersScore)
                    {
                        _gameUI.WinMsg();
                        _player.AddToBalance(_player.Bet);
                    }
                    // If dealer scores better than player.
                    else if (playersScore < dealersScore)
                    {
                        _gameUI.LoseMsg();
                        _player.AddToBalance(-1 * _player.Bet);
                    }
                    // If both have equal score.
                    else
                    {
                        _gameUI.TieMsg();
                    }
                }
            }
        }