예제 #1
0
        static void Excavate(Path pPath)
        {
            // go through the nested path trees
            var walker = new Walker(Point.Empty, pPath.Walkables);

            // start coordinate
            rooms.Add(Point.Empty.ToCoordinateString(), new List <Direction>());

            walker.Excavate();

            int width  = maxCoordinate.X - minCoordinate.X + 1;
            int height = maxCoordinate.Y - minCoordinate.Y + 1;

            map = new int[width, height];

            foreach (var room in rooms)
            {
                var parts     = room.Key.Split(new string[] { "," }, StringSplitOptions.None);
                var roomPoint = new Point(int.Parse(parts[0]) - minCoordinate.X, int.Parse(parts[1]) - minCoordinate.Y);
                int value     = 0;
                foreach (var d in room.Value)
                {
                    value |= (int)d;
                }

                map[roomPoint.X, roomPoint.Y] = value;
            }

            var start = new Point(-minCoordinate.X, -minCoordinate.Y);


            var path = Explore(start);

            //SaveMap(path);
            //DrawMap();
            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine((path.Count - 1) + ". Done!");
            Console.ReadKey(true);
        }