Esempio n. 1
0
        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])));
        }
Esempio n. 2
0
        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));
        }