Пример #1
0
        public SlotMachineSpinResultDto Spin(decimal stakeAmount)
        {
            var    rowsOfSymbols = new List <List <Symbol> >();
            double coefficient   = 0;
            ISymbolCoefficientProvider symbolCoefficientProvider = _symbolCoefficientProviderFactory.Create();

            for (int i = 0; i < Rows; i++)
            {
                List <Symbol> symbols = _randomSymbolGenerator.Generate(NumberOfSymbolsOnARow);
                rowsOfSymbols.Add(symbols);
                coefficient += symbolCoefficientProvider.GetCoefficient(symbols);
            }

            decimal winAmount = (decimal)coefficient * stakeAmount;

            _player.Balance += winAmount;

            return(new SlotMachineSpinResultDto
            {
                PlayerBalance = _player.Balance,
                Symbols = rowsOfSymbols,
                WinAmount = winAmount,
                IsSuccess = true
            });
        }
Пример #2
0
        public double GetCoefficient(List <Symbol> symbols)
        {
            double coefficient      = 0;
            int    countOfSameItems = 0;

            foreach (var symbol in symbols)
            {
                if (symbol.GetType() == GetSymbolType() || symbol is Wildcard)
                {
                    countOfSameItems++;
                    coefficient += symbol.Coefficient;
                }
            }

            if (countOfSameItems == symbols.Count)
            {
                return(coefficient);
            }

            if (_successor != null)
            {
                return(_successor.GetCoefficient(symbols));
            }

            return(0);
        }