private FieldTypes[][] GenerateBaseTable(int rows, int columns, int mineCount)
        {
            var gameTable = new FieldTypes[rows][];

            var minedFields = Enumerable
                              .Range(0, rows)
                              .Select(row => Enumerable.Range(0, columns).Select(col => new { Row = row, Column = col }))
                              .SelectMany(pairs => pairs)
                              .Select(pair => new
            {
                pair.Row,
                pair.Column,
                Order = _randomNumberProvider.GetRandomNumber()
            })
                              .OrderBy(pairWithOrder => pairWithOrder.Order)
                              .Take(mineCount)
                              .ToList();

            for (var row = 0; row < rows; ++row)
            {
                gameTable[row] = new FieldTypes[columns];

                for (var col = 0; col < columns; ++col)
                {
                    gameTable[row][col] = FieldTypes.Empty;
                }
            }

            foreach (var minedField in minedFields)
            {
                gameTable[minedField.Row][minedField.Column] = FieldTypes.Mined;
            }

            return(gameTable);
        }
Esempio n. 2
0
 private void MakeComputerChoice()
 {
     _computerNumber = _randomNumberProvider.GetRandomNumber();
 }
Esempio n. 3
0
 public Players SelectRandomPlayer()
 {
     return(_randomNumberProvider.GetRandomNumber() % 2 == 0
         ? Players.Player1
         : Players.Player2);
 }