示例#1
0
        private int GetAmountToBet()
        {
            int newBet = BettingStrategy.GetAmountToBet();

            CurrentBet = newBet;
            return(CurrentBet);
        }
示例#2
0
        public static decimal DetermineBet(decimal currentBet,
                                           BettingStrategy bettingStrategy, bool playerWins,
                                           decimal currentFunds, decimal targetFunds)
        {
            switch (bettingStrategy)
            {
            case BettingStrategy.Steady:
                return(currentBet);

            case BettingStrategy.DoubleOnLose:
                return(playerWins ? currentBet : currentBet * 2);

            case BettingStrategy.DoubleOnWin:
                return(playerWins ? currentBet * 2 : currentBet);

            case BettingStrategy.IncreaseOnLose:
                return(playerWins ? currentBet : currentBet + 1);

            case BettingStrategy.IncreaseOnWin:
                return(playerWins ? currentBet + 1 : currentBet);

            case BettingStrategy.Martingale:
                return(targetFunds - currentFunds);
            }

            return(0);
        }
        public void CurrentBet10_CallBettingStragyHelperForEachStrategy(
            BettingStrategy bettingStrategy, bool isWinner, decimal expectedNewBetAmount)
        {
            // Act
            decimal betAmount = BettingStrategyHelper.DetermineBet(10, bettingStrategy, isWinner, 1000, 2000);

            // Assert
            Assert.Equal(expectedNewBetAmount, betAmount);
        }
示例#4
0
        public void RecordWin(bool hasBlackjack)
        {
            if (hasBlackjack)
            {
                Funds += CurrentBet + CurrentBet * 1.5;
            }
            else
            {
                Funds += CurrentBet * 2;
            }

            BettingStrategy.UpdateForWin();
            Statistics.RecordWin();
        }
        public async Task RunAnalysis_Steady_ReturnsRemainingPot(BettingStrategy bettingStrategy)
        {
            // Arrange
            var logger                = Substitute.For <ILogger <RunAnalysis> >();
            var playHand              = new PlayHand();
            var runAnalysis           = new RunAnalysis(logger, playHand);
            var analysisConfiguration = new AnalysisConfiguration()
            {
                StartingAnte     = 1,
                BettingStrategy  = bettingStrategy,
                DeckCountPerShoe = 4,
                PlayerFunds      = 10,
                TargetFunds      = 11,
                AvailableActions = TestHelper.BuildAvailableActionsAlwaysStand()
            };

            var updateProgress = Substitute.For <IUpdateProgress>();

            // Act
            decimal result = await runAnalysis.Run(analysisConfiguration, updateProgress);

            // Assert
            Assert.True(result <= analysisConfiguration.TargetFunds + 1);
        }
示例#6
0
 public void RecordLoss()
 {
     BettingStrategy.UpdateForLoss();
     Statistics.RecordLoss();
 }
示例#7
0
 public void ResetBettingStrategy()
 {
     BettingStrategy.Reset();
 }
示例#8
0
 public void RecordPush()
 {
     BettingStrategy.UpdateForPush();
     Statistics.RecordPush();
 }