Exemplo n.º 1
0
        static void Main(string[] args) {

            
            var restagent = new RestAgent();
            MazeSemanticsProvider.RegisterSemantics(restagent.SemanticsRegistry);
			restagent.SetAcceptedMediaTypes( new[] { new MediaTypeWithQualityHeaderValue("application/vnd.amundsen.maze+xml") });

            var link = new Link() {Target = new Uri("http://amundsen.com/examples/mazes/2d/five-by-five/")};
            
            restagent.NavigateTo(link);

            var startlink = restagent.CurrentContent.GetLink<StartLink>();
            restagent.NavigateTo(startlink);

            // Pick first available door
            var firstlink = (from lk in restagent.CurrentContent.GetLinks() where !(lk is CurrentLink || lk is StartLink) select lk).First();
            restagent.NavigateTo((Link)firstlink);

            var linkfrom = firstlink;

            while (restagent.CurrentContent.GetLink<ExitLink>() == null) {

                Link chosenLink = null;
                var availablelinks = (from lk in restagent.CurrentContent.GetLinks() select lk).ToDictionary(lk => lk.Relation);

                switch(linkfrom.Relation) {
                    case "east":
                        chosenLink = ChooseDoor(availablelinks, "south", "east", "north", "west");
                        break;
                    case "west":
                        chosenLink = ChooseDoor(availablelinks, "north", "west", "south", "east");
                        break;
                    case "south":
                        chosenLink = ChooseDoor(availablelinks, "west", "south", "east", "north");
                        break;
                    case "north":
                        chosenLink = ChooseDoor(availablelinks, "east", "north", "west", "south");
                        break;

                }
                Console.WriteLine("Going : " + chosenLink.Relation);
                restagent.NavigateTo((Link)chosenLink);
                linkfrom = chosenLink;
            }
            Console.WriteLine("Complete"); 
            Console.ReadLine();
        }
Exemplo n.º 2
0
         private static ShellModel CreateMazeModel(CompositionContainer container) {
             EscapeMaze escapeMaze = CreateEscapeMazeMission();

             var mazeLink = new Link() {Target = new Uri("http://amundsen.com/examples/mazes/2d/five-by-five/")};
             

             var restAgent = new RestAgent();
			 MazeSemanticsProvider.RegisterSemantics(restAgent.SemanticsRegistry);
             restAgent.SemanticsRegistry.RegisterFormatter(new XmlFormatter("application/vnd.amundsen.maze+xml"));
             
             restAgent.SemanticsRegistry.RegisterFormatter(new HtmlFormatter());
             restAgent.SemanticsRegistry.RegisterLinkExtractor(new HtmlLinkExtractor());

             //restAgent.SetAcceptedMediaTypes(new List<MediaTypeWithQualityHeaderValue>(){ new MediaTypeWithQualityHeaderValue("application/vnd.amundsen.maze+xml")});
             restAgent.SetAcceptedMediaTypes(new List<MediaTypeWithQualityHeaderValue>() { new MediaTypeWithQualityHeaderValue("text/html") });

             restAgent.NavigateTo(mazeLink);
           

             return new ShellModel {
                                       Container = container,
                                       DefaultMission = escapeMaze,
                                       RestAgent = restAgent
                                   };
         }