Esempio n. 1
0
        public Graph BuildGraph(MazeLevel maze)
        {
            _mazeLevel = maze;

            var graph   = new Graph();
            var notWall = maze.Cells.NotWall();

            foreach (var cell in notWall)
            {
                var vertex = new Vertex();
                vertex.BaseCell = cell;
                graph.Vertices.Add(vertex);
            }

            foreach (var cell in notWall)
            {
                var currentVertext = graph.Vertices.Single(x => x.BaseCell == cell);
                var nears          = GetNearCells(cell).NotWall();
                foreach (var near in nears)
                {
                    var neighbor = graph.Vertices.Single(x => x.BaseCell == near);
                    currentVertext.Neighbors.Add(neighbor);
                }
            }

            return(graph);
        }
Esempio n. 2
0
        public MazeLevel Build(int width = 20, int height = 10, int?seed = null)
        {
            seed       = seed ?? DateTime.Now.Millisecond;
            _random    = new Random(seed.Value);
            _mazeLevel = new MazeLevel(width, height, seed.Value);

            GenerateWalls();

            GenerateGrounds();

            GenerateGold();

            return(_mazeLevel);
        }