Ejemplo n.º 1
0
        public void CalculateBalance(CardsGame.Players.BlackjackPlayer dealerPlayer)
        {
            for (int playerIndex = 0; playerIndex < players.Count; playerIndex++)
            {
                CardsGame.Players.BlackjackPlayer player = (CardsGame.Players.BlackjackPlayer)players[playerIndex];
                float factor = CalculateFactorFromHand(dealerPlayer, player, CardsGame.Players.HandTypes.First);
                if (player.IsSplit)
                {
                    float factor2    = CalculateFactorFromHand(dealerPlayer, player, CardsGame.Players.HandTypes.Second);
                    float initialBet = player.BetAmount / ((player.Double ? 2f : 1f) + (player.SecoundDouble ? 2f : 1f));

                    float bet1 = initialBet * (player.Double ? 2f : 1f);
                    float bet2 = initialBet * (player.SecoundDouble ? 2f : 1f);

                    player.Balance += bet1 * factor + bet2 * factor2;

                    if (player.IsInsurance && dealerPlayer.BlackJack)
                    {
                        player.Balance += initialBet;
                    }
                }
                else
                {
                    if (player.IsInsurance && dealerPlayer.BlackJack)
                    {
                        player.Balance += player.BetAmount;
                    }
                }
                player.ClearBet();
            }
        }
Ejemplo n.º 2
0
        public override void Update(GameTime gameTime)
        {
            if (players.Count > 0)
            {
                if (((Game1)cardGame).State == BlackjackGameState.Betting && !((CardsGame.Players.BlackjackPlayer)players[players.Count - 1]).IsDoneBetting)
                {
                    int playerIndex = GetCurrentPlayer();

                    CardsGame.Players.BlackjackPlayer player = (CardsGame.Players.BlackjackPlayer)players[playerIndex];
                    //se for necessário adiciona-se aqui os aiplayers
                }
            }

            if (((CardsGame.Players.BlackjackPlayer)players[players.Count - 1]).IsDoneBetting)
            {
                Game1 blackjackGame = ((Game1)cardGame);

                if (!blackjackGame.CheckForRunningAnimations <BlackJack21.CardFramework.AnimatedGameComponent>())
                {
                    ShowAndEnableButtons(false);
                    blackjackGame.State = BlackjackGameState.Dealing;

                    Enabled = false;
                }
            }
            base.Update(gameTime);
        }
Ejemplo n.º 3
0
        private float CalculateFactorFromHand(CardsGame.Players.BlackjackPlayer dealerPlayer, CardsGame.Players.BlackjackPlayer player, CardsGame.Players.HandTypes currentHand)
        {
            float factor;

            bool blackjack, bust, considerAce;
            int  playerValue;

            player.CalculateValues();

            switch (currentHand)
            {
            case Players.HandTypes.First:
                blackjack   = player.BlackJack;
                bust        = player.Bust;
                playerValue = player.FirstValue;
                considerAce = player.FirstValueConsiderAce;
                break;

            case Players.HandTypes.Second:
                blackjack   = player.BlackJack;
                bust        = player.SecondBust;
                playerValue = player.SecondValue;
                considerAce = player.SecondValueConsiderAce;
                break;

            default:
                throw new Exception("Player has an unsupported hand type.");
            }

            if (considerAce)
            {
                playerValue += 10;
            }
            if (bust)
            {
                factor = -1;
            }
            else if (dealerPlayer.Bust)
            {
                if (blackjack)
                {
                    factor = 1.5f;
                }
                else
                {
                    factor = 1;
                }
            }
            else if (dealerPlayer.BlackJack)
            {
                if (blackjack)
                {
                    factor = 0;
                }
                else
                {
                    factor = -1;
                }
            }
            else if (blackjack)
            {
                factor = 1.5f;
            }
            else
            {
                int dealerValue = dealerPlayer.FirstValue;

                if (dealerPlayer.FirstValueConsiderAce)
                {
                    dealerValue += 10;
                }
                if (playerValue > dealerValue)
                {
                    factor = 1;
                }
                else if (playerValue < dealerValue)
                {
                    factor = -1;
                }
                else
                {
                    factor = 0;
                }
            }
            return(0);
        }