Example #1
0
        public IBallMachine ExtractRandomBallsFromMachine(IBallMachine ballMachine, int quantityToExtraction)
        {
            var balls         = ballMachine.GetUnExtractedBalls();
            var ballsQuantity = balls.Count;
            var range         = new Range(0, ballsQuantity - 1);

            if (ballsQuantity <= quantityToExtraction)
            {
                foreach (var item in balls)
                {
                    item.SetIsExtracted(true);
                }

                return(ballMachine);
            }

            var randomPositions = randomNumbers.GenerateDistinctRandomNumbers(range, quantityToExtraction);

            for (int i = 0; i < randomPositions.Count; i++)
            {
                var ball = balls[randomPositions[i]];
                ball.SetIsExtracted(true);
            }

            return(ballMachine);
        }
Example #2
0
        public List <int> TakenOutBalls(int quantityOfTakenBalls)
        {
            var takenBalls      = new List <int>();
            var quantityOfBalls = gameDataSetting.GetGameData().GetQuantityOfBalls();
            var numbersTaken    = randomNumbers.GenerateDistinctRandomNumbers(new Range(1, quantityOfBalls), quantityOfTakenBalls);

            return(null);
        }
Example #3
0
        public ICard CreateCardPrototype(ICard card, IRandomNumbersGenerator randomNumbersGenerator)
        {
            var rowNumber    = gameDataSetting.GetCardData().GetRowNumber();
            var columnNumber = gameDataSetting.GetCardData().GetColumnNumber();
            var fillerCard   = new DataFiller(card);

            for (int i = 0; i < columnNumber; i++)
            {
                var numbers = randomNumbersGenerator.GenerateDistinctRandomNumbers(columnRangeGetter.GetRangeForColumn(i), rowNumber);
                fillerCard.FillData(numbers, i);
            }

            return(card);
        }
        public ICard InjectSpace(ICard card, IGameConfiguration gameDataSetting)
        {
            var rowNumber      = gameDataSetting.GetCardData().GetRowNumber();
            var columnNumber   = gameDataSetting.GetCardData().GetColumnNumber();
            var spacesInjector = new CardSpaceFiller(card);

            for (int i = 0; i < rowNumber; i++)
            {
                var columnPositions = generator.GenerateDistinctRandomNumbers(new Range(1, columnNumber), 4);
                spacesInjector.FillData(columnPositions, i);
            }

            return(card);
        }
Example #5
0
        private IBall GetBall()
        {
            IBall result          = null;
            var   quantityOfBalls = balls.Count;

            while (true)
            {
                var range = new Range(0, quantityOfBalls - 1);
                var index = randomNumbers.GenerateDistinctRandomNumbers(range, 1);

                if (!balls[index[0]].IsExtracted())
                {
                    balls[index[0]].SetIsExtracted(true);
                    result = balls[index[0]];
                    break;
                }
            }

            return(result);
        }