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(); } }
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); }
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); }