private static void Test(IMazeBuilder builder, int rows, int columns, int samples) { if (builder == null) { return; } Console.WriteLine("{0}x{1}: {2}", rows, columns, builder); int sumPathLength = 0; int sumDeadEnds = 0; for (int i = 0; i < samples; i++) { var grid = Grid.CreateGrid(rows, columns); builder.Build(grid); Distances longestPath = Distances.LongestPath(grid); sumPathLength += longestPath.MaxDistance().Value; Distances deadEnds = Distances.DeadEnds(grid); sumDeadEnds += deadEnds.Count(); } Console.WriteLine("Longest Path: {0}", (double)sumPathLength / samples); Console.WriteLine("Nr Dead Ends: {0}", (double)sumDeadEnds / samples); }
public Maze(IMazeBuilder builder) { if (builder == null) throw new ArgumentNullException("builder"); Width = builder.Width; Height = builder.Height; HWalls = new bool[Width, Height + 1]; VWalls = new bool[Width + 1, Height]; ClearMaze(); builder.Build(this); MazeHasBeenBuilt(Width, Height); startPosition = builder.MazeStartPosition; x = startPosition.X; y = startPosition.Y; direction = Direction.East; MouseHasMoved(new Position(x, y)); MouseHasTurned(direction); }