Example #1
0
 public AiTester(Settings settings, MapGenerator gen, GameVisualizer vis,
                 ProcessMonitor monitor, Func <Map, Ai, Game> gameCreator,
                 Func <string, ProcessMonitor, Ai> aiCreator)
 {
     this.settings    = settings;
     this.gen         = gen;
     this.vis         = vis;
     this.monitor     = monitor;
     this.gameCreator = gameCreator;
     this.aiCreator   = aiCreator;
 }
Example #2
0
 private void RunGameToEnd(Game game, GameVisualizer vis)
 {
     while (!game.IsOver())
     {
         game.MakeStep();
         if (settings.Interactive)
         {
             vis.Visualize(game);
             if (game.AiCrashed)
             {
                 Console.WriteLine(game.LastError.Message);
             }
             Console.ReadKey();
         }
     }
 }
Example #3
0
        public void TestSingleFile(string exe)
        {
            var gen     = new MapGenerator(settings.Width, settings.Height, settings.Ships, new Random(settings.RandomSeed));
            var vis     = new GameVisualizer();
            var monitor = new ProcessMonitor(TimeSpan.FromSeconds(settings.TimeLimitSeconds * settings.GamesCount),
                                             settings.MemoryLimit);
            var badShots    = 0;
            var crashes     = 0;
            var gamesPlayed = 0;
            var shoots      = new List <int>();
            var ai          = new Ai(exe, monitor);

            for (var iGame = 0; iGame < settings.GamesCount; iGame++)
            {
                var map  = gen.GenerateMap();
                var game = new Game(map, ai);
                RunGameToEnd(game, vis);
                gamesPlayed++;
                badShots += game.BadShots;
                if (game.AiCrashed)
                {
                    crashes++;
                    if (crashes > settings.CrashLimit)
                    {
                        break;
                    }
                    ai = new Ai(exe, monitor);
                }
                else
                {
                    shoots.Add(game.TurnsCount);
                }
                if (settings.Verbose)
                {
                    Console.WriteLine(
                        "Game #{3,4}: Turns {0,4}, BadShots {1}{2}",
                        game.TurnsCount, game.BadShots, game.AiCrashed ? ", Crashed" : "", iGame);
                }
            }
            ai.Dispose();
            WriteTotal(ai, shoots, crashes, badShots, gamesPlayed);
        }