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(); }
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; }