Esempio n. 1
0
 public static void DebugSolve(int problemnum, int seed, string[] magicSpells, int delay)
 {
     var problem = ProblemsSet.GetProblem(problemnum);
     //var problemSolver = new MagicProblemSolver();
     //var solver = new MuggleProblemSolver();
     var solver = new MuggleProblemSolver_MultiUnit(1);
     var fastConsole = new FastConsole();
     solver.SolutionAdded += (g, s) =>
     {
         using (var drawer = new Drawer(fastConsole))
         {
             drawer.DrawMap(g.map, g.currentUnit);
             drawer.console.WriteLine("Score: " + g.CurrentScore);
         }
         Console.ReadKey(true);
         var unit = g.currentUnit;
         foreach (var c in s.Where(x => !MoveTypeExt.IsIgnored(x)))
         {
             var moveType = MoveTypeExt.Convert(c);
             if (!moveType.HasValue)
                 throw new InvalidOperationException(string.Format("Invalid char in solution: {0}. Char: '{1}'", s, c));
             var newUnit = unit.Move(moveType.Value);
             using (var drawer = new Drawer(fastConsole))
             {
                 if (newUnit.IsCorrect(g.map))
                     drawer.DrawMap(g.map, newUnit);
                 else
                     drawer.DrawMap(g.map, unit, locked: true);
                 drawer.console.WriteLine("Score: " + g.CurrentScore);
                 unit = newUnit;
             }
             Thread.Sleep(delay < 0 ? 0 : delay);
         }
         Console.ReadKey(true);
     };
     solver.Solve(problem, problem.sourceSeeds[seed], magicSpells);
     while (Console.ReadKey(true).Key != ConsoleKey.Escape)
     { }
 }
Esempio n. 2
0
        public static void Solve(int problemnum, int seed, string[] magicSpells, int delay, bool visualize)
        {
            var problem = ProblemsSet.GetProblem(problemnum);
            //			var muggleProblemSolver = new MuggleProblemSolver();
            //var muggleProblemSolver = new MagicProblemSolver();
            var solver = new MuggleProblemSolver_MultiUnit(1);

            var stopwatch = Stopwatch.StartNew();
            var solution = solver.Solve(problem, problem.sourceSeeds[seed], magicSpells);
            stopwatch.Stop();

            var game = new Game(problem, new Output { seed = problem.sourceSeeds[seed], solution = solution }, magicSpells);
            if (visualize)
            {
                var emulator = new Emulator(game, delay);
                emulator.Run();
            }
            else
            {
                while (game.state == GameBase.State.UnitInGame || game.state == GameBase.State.WaitUnit)
                {
                    game.Step();
                }
                Console.WriteLine("Score=" + game.CurrentScore);
                Console.WriteLine("Time=" + stopwatch.Elapsed);
                Console.ReadKey();
            }
        }