public void SetDistanceFromStart_Should_Work_On_Large_Mazes_With_Multiple_Portals() { StringBuilder mazeDef = new StringBuilder(); mazeDef.AppendLine(" A "); mazeDef.AppendLine(" A "); mazeDef.AppendLine(" #######.#########"); mazeDef.AppendLine(" #######.........#"); mazeDef.AppendLine(" #######.#######.#"); mazeDef.AppendLine(" #######.#######.#"); mazeDef.AppendLine(" #######.#######.#"); mazeDef.AppendLine(" ##### B ###.#"); mazeDef.AppendLine("BC...## C ###.#"); mazeDef.AppendLine(" ##.## ###.#"); mazeDef.AppendLine(" ##...DE F ###.#"); mazeDef.AppendLine(" ##### G ###.#"); mazeDef.AppendLine(" #########.#####.#"); mazeDef.AppendLine("DE..#######...###.#"); mazeDef.AppendLine(" #.#########.###.#"); mazeDef.AppendLine("FG..#########.....#"); mazeDef.AppendLine(" ###########.#####"); mazeDef.AppendLine(" Z "); mazeDef.AppendLine(" Z "); var allMaze = mazeDef.ToString().ToDoubleCharArray(); Maze m = new Maze(allMaze, new DayTwentyMazeFactory()); MazeEntrance e = m.Cells.OfType <MazeEntrance>().First(); m.ResetCells(); m.SetDistancesFrom(e); m.Cells.OfType <MazeExit>().First().DistanceFromStart.Should().Be(23); }
public void SetUp() { cell = new MazeCell(new Point2D(1, 1)); wall = new MazeWall(new Point2D(1, 1)); exit = new MazeExit(new Point2D(1, 1)); entrance = new MazeEntrance(new Point2D(1, 1)); collection = new MazeCellCollection(); }
public void SetDistanceFromStart_Should_Work_On_Very_Large_Mazes_With_Multiple_Portals() { StringBuilder mazeDef = new StringBuilder(); mazeDef.AppendLine(" A "); mazeDef.AppendLine(" A "); mazeDef.AppendLine(" #################.############# "); mazeDef.AppendLine(" #.#...#...................#.#.# "); mazeDef.AppendLine(" #.#.#.###.###.###.#########.#.# "); mazeDef.AppendLine(" #.#.#.......#...#.....#.#.#...# "); mazeDef.AppendLine(" #.#########.###.#####.#.#.###.# "); mazeDef.AppendLine(" #.............#.#.....#.......# "); mazeDef.AppendLine(" ###.###########.###.#####.#.#.# "); mazeDef.AppendLine(" #.....# A C #.#.#.# "); mazeDef.AppendLine(" ####### S P #####.# "); mazeDef.AppendLine(" #.#...# #......VT"); mazeDef.AppendLine(" #.#.#.# #.##### "); mazeDef.AppendLine(" #...#.# YN....#.# "); mazeDef.AppendLine(" #.###.# #####.# "); mazeDef.AppendLine("DI....#.# #.....# "); mazeDef.AppendLine(" #####.# #.###.# "); mazeDef.AppendLine("ZZ......# QG....#..AS"); mazeDef.AppendLine(" ###.### ####### "); mazeDef.AppendLine("JO..#.#.# #.....# "); mazeDef.AppendLine(" #.#.#.# ###.#.# "); mazeDef.AppendLine(" #...#..DI BU....#..LF"); mazeDef.AppendLine(" #####.# #.##### "); mazeDef.AppendLine("YN......# VT..#....QG"); mazeDef.AppendLine(" #.###.# #.###.# "); mazeDef.AppendLine(" #.#...# #.....# "); mazeDef.AppendLine(" ###.### J L J #.#.### "); mazeDef.AppendLine(" #.....# O F P #.#...# "); mazeDef.AppendLine(" #.###.#####.#.#####.#####.###.# "); mazeDef.AppendLine(" #...#.#.#...#.....#.....#.#...# "); mazeDef.AppendLine(" #.#####.###.###.#.#.#########.# "); mazeDef.AppendLine(" #...#.#.....#...#.#.#.#.....#.# "); mazeDef.AppendLine(" #.###.#####.###.###.#.#.####### "); mazeDef.AppendLine(" #.#.........#...#.............# "); mazeDef.AppendLine(" #########.###.###.############# "); mazeDef.AppendLine(" B J C "); mazeDef.AppendLine(" U P P "); var allMaze = mazeDef.ToString().ToDoubleCharArray(); Maze m = new Maze(allMaze, new DayTwentyMazeFactory()); MazeEntrance e = m.Cells.OfType <MazeEntrance>().First(); m.ResetCells(); m.SetDistancesFrom(e); m.Cells.OfType <MazeExit>().First().DistanceFromStart.Should().Be(58); }
private MazeEntrance CreateEntrance(IntVector2 coordinates) { MazeEntrance newCell = Instantiate(entrancePrefab) as MazeEntrance; cells[coordinates.x, coordinates.y] = newCell; newCell.coordinates = coordinates; newCell.name = "Maze Entrance " + coordinates.x + ", " + coordinates.y; newCell.transform.parent = transform; newCell.transform.localPosition = new Vector3( coordinates.x * newCell.size.x - size.x * 0.5f * newCell.size.x + 0.5f * newCell.size.x, coordinates.y * newCell.size.y - size.y * 0.5f * newCell.size.y + 0.5f * newCell.size.y, 0f ); return newCell; }
public void SetDistanceFromStart_Should_Use_Portals_When_Available() { StringBuilder mazeDef = new StringBuilder(); mazeDef.AppendLine("########"); mazeDef.AppendLine("##BC..ZZ"); mazeDef.AppendLine("########"); mazeDef.AppendLine("AA..BC##"); mazeDef.AppendLine("########"); var allMaze = mazeDef.ToString().ToDoubleCharArray(); Maze m = new Maze(allMaze, new DayTwentyMazeFactory()); MazeEntrance e = m.Cells.OfType <MazeEntrance>().First(); m.ResetCells(); m.SetDistancesFrom(e); m.Cells.OfType <MazeExit>().First().DistanceFromStart.Should().Be(3); }