public Maze Generate(int width, int height, IRandomizer randomizer) { if (width < 3 || height < 3) { throw new ArgumentException("Minimal size of generated maze is 3x3"); } _randomizer = randomizer; _cells = new MazeCellType[width, height]; for (int x = 0; x < _cells.GetLength(0); x++) { for (int y = 0; y < _cells.GetLength(1); y++) { _cells[x, y] = MazeCellType.Wall; } } int startX = _randomizer.GetRandomX(width - 2) + 1; int startY = _randomizer.GetRandomY(height - 2) + 1; _cells[startX, startY] = MazeCellType.Start; CarvePassages(startX, startY); return(Maze.Create(_cells)); }