示例#1
0
        public static void Main(string[] args)
        {
            var width = 45;
             var height = 30;
             var grid = new GridFactory().Create(width, height);
             var manipulator = new GridManipulator(grid, new Random());
            //         manipulator.CutLine(new Line2D(new Point2D(0, 0), new Point2D(20, 40)));

             Renderer renderer = null;//new Renderer(grid);//.RenderGrid(grid);
             var spiral = new SpiralParametricFunction(1, 9, 3, width / 2.0f, height / 2.0f, 0);
             manipulator.CutParametric(spiral.TInitial, spiral.TFinal, 20f, spiral.PointAt, renderer);
             var lastSpiralPoint = spiral.PointAt(spiral.TFinal - 30);
             var v = new Vector2D(lastSpiralPoint, new Point2D(width / 2.0f, height / 2.0f));
             v = v.ToUnitVector();
             var cutDestination = lastSpiralPoint + v * 3;
             manipulator.CutLine(new Line2D(lastSpiralPoint, cutDestination), renderer);

             Application.DoEvents();
             var entranceCell = grid.Cells[(height / 2) * grid.Width + (width / 2)];
             var cells = manipulator.FillRegion(entranceCell, renderer);

             renderer = new Renderer(grid);//.RenderGrid(grid);

             manipulator.PlaceLocksAndKeys(entranceCell, cells, new[] {
            Color.Red,
            Color.Blue,
            Color.DarkGreen,
            Color.DeepPink,
            Color.Magenta,
            Color.Cyan,
            Color.Yellow,
            Color.Gold,
            Color.Black,
            Color.DarkOrange,
            Color.Gray,
            Color.Aquamarine,
            Color.AliceBlue,
            Color.Azure,
            Color.DodgerBlue,
            Color.Indigo,
            Color.DeepSkyBlue,
            Color.PaleGreen,
            Color.PaleGoldenrod,
            Color.PaleTurquoise});

             Console.WriteLine("Cell Count: " + cells.Count);
             entranceCell.Type = CellType.Entrance;
             while (true) {
            renderer.RenderGrid(grid);
            Application.DoEvents();
             }
        }