Exemple #1
0
        private static void ColorizeThetaMazes()
        {
            var grid = new ColoredPolarGrid(100);

            BinaryTree.Maze(grid);
            var start = grid[0, 0];

            grid.Distances = start.Distances;

            var img = grid.ToImg(25);

            img.Save("binaryTheta.png");

            grid = new ColoredPolarGrid(100);
            Sidewinder.Maze(grid);
            start          = grid[0, 0];
            grid.Distances = start.Distances;
            img            = grid.ToImg(25);
            img.Save("sidewinderTheta.png");

            grid = new ColoredPolarGrid(100);
            AldousBroder.Maze(grid);
            start          = grid[0, 0];
            grid.Distances = start.Distances;
            img            = grid.ToImg(25);
            img.Save("aldousBroderTheta.png");

            grid = new ColoredPolarGrid(100);
            HuntAndKill.Maze(grid);
            start          = grid[0, 0];
            grid.Distances = start.Distances;
            img            = grid.ToImg(25);
            img.Save("huntAndKillTheta.png");

            grid = new ColoredPolarGrid(100);
            RecursiveBacktracker.Maze(grid, startAt: null);
            start          = grid[0, 0];
            grid.Distances = start.Distances;
            img            = grid.ToImg(25);
            img.Save("recursiveBacktrackerTheta.png");

            grid = new ColoredPolarGrid(100);
            Wilsons.Maze(grid);
            start          = grid[0, 0];
            grid.Distances = start.Distances;
            img            = grid.ToImg(25);
            img.Save("wilsonsTheta.png");

            Process.Start("binaryTheta.png");
            Process.Start("sidewinderTheta.png");
            Process.Start("aldousBroderTheta.png");
            Process.Start("huntAndKillTheta.png");
            Process.Start("recursiveBacktrackerTheta.png");
            Process.Start("wilsonsTheta.png");
        }
Exemple #2
0
        private void btnColorize_Click(object sender, EventArgs e)
        {
            if (cbAlgorithm.SelectedItem != null)
            {
                IColoredGrid colorGrid = new ColoredGrid(MazeSize, MazeSize);
                if (pbMask.Image != null)
                {
                    var mask = Mask.FromBitmap((Bitmap)pbMask.Image);
                    colorGrid = new MaskedColoredGrid(mask);
                }
                else if (_mode == MazeStyle.Polar)
                {
                    colorGrid = new ColoredPolarGrid(MazeSize);
                }
                else if (_mode == MazeStyle.Hex)
                {
                    colorGrid = new ColoredHexGrid(MazeSize, MazeSize * 3 / 2);
                }
                else if (_mode == MazeStyle.Triangle)
                {
                    colorGrid = new ColoredTriangleGrid(MazeSize, MazeSize * 2);
                }
                else if (_mode == MazeStyle.Upsilon)
                {
                    colorGrid = new ColoredUpsilonGrid(MazeSize, MazeSize);
                }

                if (!CreateSelectedMaze(colorGrid))
                {
                    return;
                }
                Cell start;
                if (_startPoint.HasValue)
                {
                    start = colorGrid[_startPoint.Value.Y, _startPoint.Value.X];
                }
                else if (colorGrid is MaskedColoredGrid)
                {
                    start = colorGrid.RandomCell();
                }
                else if (_mode == MazeStyle.Polar)
                {
                    start = colorGrid[0, 0];
                }
                else
                {
                    start = colorGrid[colorGrid.Rows / 2, colorGrid.Columns / 2];
                }
                colorGrid.Distances = start.Distances;

                colorGrid.BackColor = pbColor.BackColor;

                pbMaze.Image = colorGrid.ToImg(GridSize, (float)nudInset.Value);
            }
        }