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