static void Main(string[] agrs) { Console.WriteLine("The program demonstrates how different " + "blackjack strategies affect a player's balance.\n"); int gameCounter = 10000; // WinningStrategyBot statistic var winningBot = new WinningStrategyBot(x => x > 40, 1000); var collector = new StatisticCollector(winningBot, "Winning strategy"); collector.Collect(gameCounter); collector.Show(); // HiLowStrategyBot statistic var hiLowBot = new HiLowStrategyBot((x) => x > 40, 1000); collector = new StatisticCollector(hiLowBot, "HiLow strategy"); collector.Collect(gameCounter); collector.Show(); // HiOptIIStrategyBot statistic var hiOptIIBot = new HiOptIIStrategyBot((x) => x > 40, 1000); collector = new StatisticCollector(hiOptIIBot, "HiOptIIStrategyBot"); collector.Collect(gameCounter); collector.Show(); Console.WriteLine("That's all! Thank you!"); return; }
public void PlayTest() { var bot = new HiLowStrategyBot(initialBet); bot.Hands[0].Cards = Tools.CreateCardSet(CardRank.Ace); var dealerCards = Tools.CreateCardSet(CardRank.Two); Assert.IsTrue(bot.Play(bot.Hands[0], dealerCards) == HandState.Split); }
public void ResetFlagTest() { var bot = new HiLowStrategyBot(initialBet) { Flag = PlayerState.DeckReset }; bot.Hands[0].Cards = Tools.CreateCardSet(CardRank.Ace); var dealerCards = Tools.CreateCardSet(CardRank.Two); Assert.IsTrue(bot.Play(bot.Hands[0], dealerCards) == HandState.Done); }
public void MakeBetTest() { // preparetion int initialBet = 100; var bot = new HiLowStrategyBot(initialBet) { Flag = PlayerState.Stop }; var botHand = bot.Hands[0]; botHand.Cards = Tools.CreateCardSet(CardRank.Ace); List <Card> dealerCards = Tools.CreateCardSet(CardRank.Ace, CardRank.Eight); int minBet = 10; int betUnit = 2 * minBet; // checking bet when 0 <= realScore < 2 bot.MakeBet(minBet); Assert.AreEqual(bot.Hands[0].Bet, betUnit); // checking bet when realScore < 0 bot.Play(botHand, dealerCards); bot.MakeBet(minBet); Assert.AreEqual(bot.Hands[0].Bet, betUnit / 2); // checking bet when 2 <= realScore < 3 botHand.Cards = Tools.CreateCardSet(CardRank.Two); dealerCards = Tools.CreateCardSet(CardRank.Two); Tools.RepeatPlay(bot, dealerCards, 8); // play here just increase realScore bot.MakeBet(minBet); Assert.AreEqual(bot.Hands[0].Bet, betUnit * 2); // checking bet when 3 <= realScore < 4 Tools.RepeatPlay(bot, dealerCards, 2); bot.MakeBet(minBet); Assert.AreEqual(bot.Hands[0].Bet, betUnit * 4); // checking bet when realScore >= 4 Tools.RepeatPlay(bot, dealerCards, 5); bot.MakeBet(minBet); Assert.AreEqual(bot.Hands[0].Bet, betUnit * 8); }
public void PlayLongGameTest() { // preparation int minBet = 5; var bot = new HiLowStrategyBot(x => x > 200, 1000 * minBet); var gameTable = new GameTable(bot, minBet); int startAmountOfCards = gameTable.GameDeck.Cards.Count; // checking Assert.DoesNotThrow(() => gameTable.Play()); Assert.IsTrue(gameTable.GameDeck.Cards.Count < startAmountOfCards); }
public void ConstructorTest() { // first case var firstBot = new HiOptIIStrategyBot(x => false, initialBet); Assert.IsFalse(firstBot.IsLeave()); Assert.IsTrue(firstBot.Hands != null); Assert.IsTrue(firstBot.Cash == initialBet); Assert.IsTrue(firstBot.Flag == PlayerState.Play); // second case var secondBot = new HiLowStrategyBot(x => false, initialBet); Assert.IsFalse(secondBot.IsLeave()); Assert.IsTrue(secondBot.Hands != null); Assert.IsTrue(secondBot.Cash == initialBet); Assert.IsTrue(secondBot.Flag == PlayerState.Play); }
public void ConstructorTest() { // first case int minBet = 6; var firstBot = new WinningStrategyBot(); var firstGameTable = new GameTable(firstBot, minBet); Assert.IsNotNull(firstGameTable); Assert.IsNotNull(firstGameTable.Dealer); Assert.IsNotNull(firstGameTable.Player); Assert.IsNotNull(firstGameTable.GameDeck); Assert.AreSame(firstBot, firstGameTable.Player); Assert.AreEqual(firstGameTable.MinBet, minBet); // second case var secondBot = new HiLowStrategyBot(); var secondGameTable = new GameTable(secondBot, minBet); Assert.IsNotNull(secondGameTable); Assert.IsNotNull(secondGameTable.Dealer); Assert.IsNotNull(secondGameTable.Player); Assert.IsNotNull(secondGameTable.GameDeck); Assert.AreSame(secondBot, secondGameTable.Player); Assert.AreEqual(secondGameTable.MinBet, minBet); // third case var thirdBot = new HiOptIIStrategyBot(); var thirdGameTable = new GameTable(thirdBot, minBet); Assert.IsNotNull(thirdGameTable); Assert.IsNotNull(thirdGameTable.Dealer); Assert.IsNotNull(thirdGameTable.Player); Assert.IsNotNull(thirdGameTable.GameDeck); Assert.AreSame(thirdBot, thirdGameTable.Player); Assert.AreEqual(thirdGameTable.MinBet, minBet); }