private void FillMaze(Maze maze) { for (int x = 0; x < maze.width; x++) { for (int y = 0; y < maze.height; y++) { Point2D point = new Point2D(x, y); MazeWall wall = new MazeWall(point); maze.addWall(wall); } } }
private MazeCell?GetNeighborCell(MazeWall wall, int mazeSize) { MazeCell cell = new MazeCell() { X = -1, Y = -1 }; switch (wall.Wall) { case Wall.Bottom: if (wall.Cell.X < mazeSize - 1) { cell.X = wall.Cell.X + 1; cell.Y = wall.Cell.Y; } break; case Wall.Left: if (wall.Cell.Y > 0) { cell.Y = wall.Cell.Y - 1; cell.X = wall.Cell.X; } break; case Wall.Right: if (wall.Cell.Y < mazeSize - 1) { cell.Y = wall.Cell.Y + 1; cell.X = wall.Cell.X; } break; case Wall.Top: if (wall.Cell.X > 0) { cell.X = wall.Cell.X - 1; cell.Y = wall.Cell.Y; } break; default: break; } if (cell.X < 0 || cell.Y < 0) { return(null); } return(cell); }
private void AddOuterWalls(MazeRoom mazeRoom) { for (int y = 0; y < mazeRoom.height; y++) { for (int x = 0; x < mazeRoom.width; x++) { Point2D point = new Point2D(x, y); if (IsOuterWall(mazeRoom.maze, x, y) & !mazeRoom.isAnExit(point)) { MazeWall wall = new MazeWall(point); mazeRoom.maze.addWall(wall); } } } }
private void CarveMaze(Maze maze, Point2D current, Random rnd) { if (maze.hasWallAt(current)) { MazeWall wall = new MazeWall(current); maze.removeWall(wall); } List <Point2D> possiblePoints = GetPossibleNextPoints(maze, current); Console.WriteLine("Possible Next Moves: " + possiblePoints.Count); if (possiblePoints.Count > 0) { int randomIndex = rnd.Next(possiblePoints.Count); Point2D nextPoint = possiblePoints[randomIndex]; CarveMaze(maze, nextPoint, rnd); } }
private MazeRoom MergeMazeWalls(MazeRoom mainMaze, MazeRoom subMaze, Point2D offset) { for (int x = 0; x < mainMaze.width; x++) { for (int y = 0; y < mainMaze.height; y++) { if (IsOuterWall(mainMaze.maze, x, y)) { continue; } Point2D point = new Point2D(x, y); if (mainMaze.maze.hasWallAt(point)) { continue; } if (x < offset.x) { continue; } if (y < offset.y) { continue; } Point2D subMazePoint = new Point2D(x - offset.x, y - offset.y); if (!subMaze.maze.hasWallAt(subMazePoint)) { continue; } // Console.WriteLine("adding wall from sub maze at: "+point.ToString()); MazeWall wall = new MazeWall(point); mainMaze.maze.addWall(wall); } } return(mainMaze); }
public void removeWall(MazeWall wall) { walls.removeWall(wall); }
public void addWall(MazeWall wall) { walls.addWall(wall); }
public void removeWall(MazeWall wall) { walls.Remove(wall.point); }
public void addWall(MazeWall wall) { walls.Add(wall.point, wall); }