Пример #1
0
        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);
        }
Пример #2
0
 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);
 }