Esempio n. 1
0
        public void LoadLevel()
        {
            Room[] rooms = LoadFromFile();
            PrintWorld(rooms, Path <TileNode> .EMPTY);
            TileNode start = null, goal = null;

            foreach (Room r in rooms)
            {
                GameTypes.IntPoint localStart = r.WorldToLocalPoint(new GameTypes.IntPoint(-8, 1));
                GameTypes.IntPoint localGoal  = r.WorldToLocalPoint(new GameTypes.IntPoint(17, 6));

                if (r.GetTileType(localStart) == TileType.FLOOR)
                {
                    start = r.GetTile(localStart);
                }

                if (r.GetTileType(localGoal) == TileType.FLOOR)
                {
                    goal = r.GetTile(localGoal);
                }
            }

            Assert.NotNull(start);
            Assert.NotNull(goal);
        }
Esempio n. 2
0
        public void FindPathManyRooms()
        {
            Room[] rooms = LoadFromFile();
            PrintWorld(rooms, Path <TileNode> .EMPTY);
            TileNode start = null, goal = null;

            foreach (Room r in rooms)
            {
                GameTypes.IntPoint localStart = r.WorldToLocalPoint(new GameTypes.IntPoint(-8, 1));
                GameTypes.IntPoint localGoal  = r.WorldToLocalPoint(new GameTypes.IntPoint(17, 6));

                if (r.GetTileType(localStart) == TileType.FLOOR)
                {
                    start = r.GetTile(localStart);
                }

                if (r.GetTileType(localGoal) == TileType.FLOOR)
                {
                    goal = r.GetTile(localGoal);
                }
            }

            Assert.NotNull(start);
            Assert.NotNull(goal);
            PathSolver <TileNode> solver      = new PathSolver <TileNode>();
            MultiRoomNetwork      roomNetwork = new MultiRoomNetwork(rooms);
            var foundPath = solver.FindPath(start, goal, roomNetwork);

            Assert.AreEqual(PathStatus.FOUND_GOAL, foundPath.status);
            PrintWorld(rooms, foundPath);
        }
Esempio n. 3
0
        private static void PrintWorld(Room[] rooms, Path <TileNode> pPath)
        {
            StringBuilder sb = new StringBuilder();

            for (int y = -1; y < 20; y++)
            {
                sb.Append(y.ToString()[y.ToString().Length - 1]);

                for (int x = -10; x < 20; x++)
                {
                    char result = ' ';

                    foreach (TileNode t in pPath.nodes)
                    {
                        if (t.worldPosition.x == x && t.worldPosition.y == y)
                        {
                            result = 'o';
                        }
                    }

                    if (result == ' ')
                    {
                        if (y == -1 && x > -10)
                        {
                            result = x.ToString()[x.ToString().Length - 1];
                        }
                        else
                        {
                            foreach (Room r in rooms)
                            {
                                GameTypes.IntPoint point = r.WorldToLocalPoint(new GameTypes.IntPoint(x, y));

                                if (r.GetTileType(point.x, point.y) == TileType.WALL)
                                {
                                    result = 'x';
                                }
                                else if (r.GetTileType(point.x, point.y) == TileType.DOOR)
                                {
                                    string matches = Regex.Replace((r.GetTile(point.x, point.y) as Door).name, "[A-z]", "");
                                    result = matches[0];
                                }
                            }
                        }
                    }

                    sb.Append(result);
                }

                sb.Append("\r\n");
            }

            Console.Write(sb.ToString());
        }