Example #1
0
        private IEnumerable <BaseUser> CreateBaseUsers(BaseUserOptions options, Func <int, int?, BaseUser> creator)
        {
            var users = new BaseUser[options.Count];

            for (var i = 0; i < options.Count; i++)
            {
                var availableAttempts = _random.Next(options.AttemptsMin, options.AttemptsMax + 1);
                var preset            = options.PresetMin.HasValue && options.PresetMax.HasValue
                    ? _random.Next(options.PresetMin.Value, options.PresetMax.Value + 1)
                    : default(int?);
                users[i] = creator(availableAttempts, preset);
            }
            return(users);
        }
Example #2
0
        private IEnumerable <BaseUser> CreateStopBeforeGuarantUsers(StopBeforeGuarantUserOptions options)
        {
            var users = new BaseUser[options.Count];

            for (var i = 0; i < options.Count; i++)
            {
                var availableAttempts = _random.Next(options.AttemptsMin, options.AttemptsMax + 1);
                var preset            = options.PresetMin.HasValue && options.PresetMax.HasValue
                    ? _random.Next(options.PresetMin.Value, options.PresetMax.Value + 1)
                    : default(int?);
                users[i] = new StopBeforeGuarantUser(availableAttempts, _random.Next(options.StopIndexMin, options.StopIndexMax + 1), preset);
            }
            return(users);
        }
Example #3
0
        private void RunUser(BaseUser user)
        {
            var random = new Random();

            Win?action()
            {
                (var win, var index) = _luckCalculationService.DiceRoll(user, random);
                if (win.HasValue)
                {
                    _statisticsService.Reg(win.Value, index);
                }
                return(win);
            }

            user.Play(action);
        }
        public (Win?win, int index) DiceRoll(BaseUser user, Random random)
        {
            var win = chances[random.Next(totalNext)];

            foreach (var key in guarants.Keys)
            {
                var value = ++user.LastWin[key];
                if (guarants[key] <= value && win != Win.FiveStart)
                {
                    win = key;
                }
            }

            var index = 0;

            if (win.HasValue)
            {
                index = user.LastWin[win.Value];
                user.LastWin[win.Value] = 0;
            }
            return(win, index);
        }