示例#1
0
        private static void RunBenchmark(string[] args)
        {
            var runner = new CamelRunner(timeScalingFactor: TimeScalingFactor);

            runner.AddPlayer(new DiceThrower());
            runner.AddPlayer(new IllegalBot());
            runner.AddPlayer(new RandomBot());

            var history = runner.GetPlayers().ToDictionary(x => x, x => new List <TimeSpan>());

            for (var i = 0; i < 250; i++)
            {
                runner.ComputeNewGame();
                Console.WriteLine($"Game #{i} finished");

                foreach (var player in runner.GetPlayers())
                {
                    history[player].Add(player.ComputationTime);
                }
            }

            runner.Save();

            var players = runner.GetPlayers();

            var title = "Player";

            Console.WriteLine($"{title,-32} Wins");
            foreach (var player in players.OrderByDescending(x => x.Wins))
            {
                var avgTime = history[player].Average(x => x.TotalSeconds);
                Console.WriteLine($"{player.Name,-32} {player.Wins, -6} {avgTime:0.000}s");
            }
        }
示例#2
0
        public void Interface_Call_Save()
        {
            var bot = GetTestBot();

            var runner = new CamelRunner(seed: 1);

            runner.AddPlayer(new RandomBot(1, seed: 2));
            runner.AddPlayer(bot);

            runner.ComputeNewGame(steps: 0);
            runner.Save();

            Assert.AreEqual(1, bot.CalledSave, "save");
        }