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(); } }