Example #1
0
        static void Main()
        {
            // Setup
            var maxTrainingTime = TimeSpan.FromMinutes(2);

            var agent0 = new RandomAgent();
            var agent1 = new IfElseAgent();

            var startPlayerDeterminer = new RandomStartPlayerDeterminer();

            // Training
            Train(agent0, agent1, startPlayerDeterminer, maxTrainingTime);

            // Run trained agent
            var runner = new GameRunner(agent0, agent1, startPlayerDeterminer);

            var status = runner.RunGame();

            runner.Moves.ForEach(PrintMove);

            Console.WriteLine($"Game finished: {status.GameStatus}");

            // Running tournament
            Console.WriteLine("starting tournament mode");
            var tournamentRunner = new TournamentRunner(agent0, agent1, startPlayerDeterminer);
            var result           = tournamentRunner.RunGame(TournamentRuns);

            Console.WriteLine($"player 0 : {result.Player0Won} player 1 : {result.Player1Won} draw : {result.Draw}");

            Console.ReadLine();
        }
Example #2
0
        private static void RunServer([NotNull] IEnumerable <string> args)
        {
            var staticContentPath    = GetStaticContentDir();
            var settings             = GetSettingsFile(args);
            var httpListenerPrefix   = settings.HttpListenerPrefix;
            var warriorProgramParser = new WarriorParser();
            var playersRepo          = new PlayersRepo(new DirectoryInfo("../players"), warriorProgramParser);
            var gamesRepo            = new CachingGamesRepo(new GamesRepo(new DirectoryInfo("../games")));
            var sessionManager       = new SessionManager("../sessions");
            var gameServer           = new GameServer();
            var debuggerManager      = new DebuggerManager(gameServer);
            var battleRunner         = new BattleRunner();
            var countdownProvider    = new CountdownProvider(settings.ContestStartTimestamp, TimeSpan.FromHours(settings.ContestDurationInHours));
            var arenaState           = new ArenaState(playersRepo, gamesRepo, countdownProvider, settings.GodModeSecret, settings.GodAccessOnly, settings.SubmitIsAllowed, settings.EnableDeepNavigation);
            var tournamentRunner     = new TournamentRunner(arenaState, battleRunner, settings.BattlesPerPair);
            var httpServer           = new GameHttpServer(httpListenerPrefix, arenaState, sessionManager, debuggerManager, tournamentRunner, staticContentPath);

            Runtime.SetStopHandler(() =>
            {
                log.InfoFormat("Stopping...");
                httpServer.Stop();
                tournamentRunner.Stop();
            });
            tournamentRunner.Start();
            httpServer.Run();
            log.InfoFormat("Listening on: {0}", httpListenerPrefix);
            if (!settings.ProductionMode)
            {
                Process.Start(httpServer.DefaultUrl);
            }
            httpServer.WaitForTermination();
            tournamentRunner.WaitForTermination();
            log.InfoFormat("Stopped");
        }
        private async void RunTournamentButton_OnClick(object sender, RoutedEventArgs e)
        {
            RunTournamentButton.IsEnabled = false;

            await _taskFactory.StartNew(() => {
                var tournamentRunner        = new TournamentRunner();
                tournamentRunner.GameConfig = GameConfig;
                tournamentRunner.Run("tournament.txt");
            });

            RunTournamentButton.IsEnabled = true;
        }