public string TestSimpleRolling(int reel, string triggerOns) { var stripId = 6; var strips = MainGame.strips(stripId).ToList(); var reel1 = strips[0]; var reel2 = strips[1]; var reel3 = strips[2]; var reel4 = strips[3]; var reel5 = strips[4]; var reels = new List <int[]>(); reels.Add(Global.takeRolling(1, 3, reel1)); reels.Add(Global.takeRolling(3, 3, reel2)); reels.Add(Global.takeRolling(5, 3, reel3)); reels.Add(Global.takeRolling(7, 3, reel4)); reels.Add(Global.takeRolling(9, 3, reel5)); var reelRollings = new [] { new Domain.Rolling(1, 3), new Domain.Rolling(3, 3), new Domain.Rolling(5, 3), new Domain.Rolling(7, 3), new Domain.Rolling(9, 3) }; var wheel = new Games.Wolves.Domain.WolvesWheel(1, ListModule.OfSeq(reels), ListModule.OfSeq(new List <int[]>()), ArrayModule.OfSeq(reelRollings)); var regions = new List <Domain.Region>(); foreach (var rolling in triggerOns.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries)) { regions.Add(new Domain.Region(reel, rolling.Split(new char[] { ',' }, System.StringSplitOptions.RemoveEmptyEntries).Select(int.Parse).ToArray())); } ; // Action var wheelRolling = Rolling.breakWinning(regions.ToArray(), wheel); var wheelFilled = Games.Wolves.ParSheet.fillUpForMainGame(stripId, wheelRolling); // Assert return(string.Concat(string.Join(',', wheelFilled.Reels[reel]), "|", string.Join(',', wheelFilled.Collapsing[reel]))); }
public decimal TestFullcycleRollingFreeGameParsheetRtp(int stripId) { var strips = FreeGame.Strips(stripId).ToList(); var totalBet = 0.0m; var totalWin = 0.0m; var totalRollingWin = 0.0m; var rollingHits = 0; var totalSpin = 0m; var reel1 = strips[0]; var reel2 = strips[1]; var reel3 = strips[2]; var reel4 = strips[3]; var reel5 = strips[4]; var profile = new Dictionary <int, int>(); var totalRolling = 0; for (int i1 = 0; i1 < reel1.Length; i1++) { for (int i2 = 0; i2 < reel2.Length; i2++) { for (int i3 = 0; i3 < reel3.Length; i3++) { for (int i4 = 0; i4 < reel4.Length; i4++) { for (int i5 = 0; i5 < reel5.Length; i5++) { totalSpin++; totalBet += 25m; var reels = new List <int[]>(); reels.Add(Global.takeRolling(i1, 3, reel1)); reels.Add(Global.takeRolling(i2, 3, reel2)); reels.Add(Global.takeRolling(i3, 3, reel3)); reels.Add(Global.takeRolling(i4, 3, reel4)); reels.Add(Global.takeRolling(i5, 3, reel5)); var result = Payout.calculate(1, 1, ListModule.OfSeq(reels)); totalWin += result.Payable; if (result.Payable > 0) { rollingHits++; totalRolling = 1; var multiplier = 1; var reelRollings = new [] { new Domain.Rolling(i1, 3), new Domain.Rolling(i2, 3), new Domain.Rolling(i3, 3), new Domain.Rolling(i4, 3), new Domain.Rolling(i5, 3) }; var wheel = new Games.Wolves.Domain.WolvesWheel(1, ListModule.OfSeq(reels), ListModule.OfSeq(new List <int[]>()), ArrayModule.OfSeq(reelRollings)); var regions = result.WinPositions.Select(item => new Domain.Region(1, item.RowPositions.ToArray())).ToArray(); var wheelRolling = Games.Wolves.Rolling.breakWinning(regions.ToArray(), wheel); var wheelFilled = Games.Wolves.ParSheet.fillUpForFreeGame(stripId, wheelRolling); do { if (multiplier < 5) { multiplier++; } else { multiplier = 10; } var rollingResult = Payout.calculate(1, multiplier, wheelFilled.Reels); if (rollingResult.Payable == 0) { break; } totalRolling++; totalRollingWin += rollingResult.Payable; regions = rollingResult.WinPositions.Select(item => new Domain.Region(1, item.RowPositions.ToArray())).ToArray(); wheel = Games.Wolves.Rolling.breakWinning(regions.ToArray(), wheelFilled); wheelFilled = Games.Wolves.ParSheet.fillUpForFreeGame(stripId, wheel); } while (true); if (!profile.ContainsKey(totalRolling)) { profile[totalRolling] = 0; } profile[totalRolling]++; } } } } } } foreach (var item in profile.OrderBy(item => item.Key)) { Console.WriteLine(String.Format("Tumble Hit {0}: {1}", item.Key, item.Value)); } Console.WriteLine(String.Format("Rolling Hit Rate : {0,12:0.0000000000}", rollingHits == 0 ? 0 : totalSpin / rollingHits)); Console.WriteLine(String.Format("RTP.Main : {0,12:0.0000000000}", 100 * totalWin / totalBet)); Console.WriteLine(String.Format("RTP.Rolling : {0,12:0.0000000000}", 100 * totalRollingWin / totalBet)); return(Math.Round(100 * totalRollingWin / totalBet, 4)); }