示例#1
0
        public void Integration_CamelRunner_Step_0()
        {
            var runner = new CamelRunner(seed: 1);

            runner.AddPlayer(new RandomBot(1, seed: 2));
            runner.AddPlayer(new RandomBot(2, seed: 3));
            var game      = runner.ComputeNewGame(steps: 0);
            var players   = runner.GetPlayers();
            var gameState = game.GameState;

            Assert.AreEqual(2, runner.GetPlayers().Count(), "players");
            Assert.AreEqual(16, gameState.BoardSize, "board");
            Assert.AreEqual(5, gameState.Camels.Count, "camels");

            Assert.AreEqual("0,0 0,1 1,2 1,3 1,4", gameState.CamelPositionToString(), "Camel positions");

            var camelOrder = gameState.GetLeadingOrder();

            Assert.AreEqual(CamelColor.Yellow, camelOrder.Skip(0).First(), "camel 0");
            Assert.AreEqual(CamelColor.Red, camelOrder.Skip(1).First(), "camel 1");
            Assert.AreEqual(CamelColor.Green, camelOrder.Skip(2).First(), "camel 2");
            Assert.AreEqual(CamelColor.White, camelOrder.Skip(3).First(), "camel 3");
            Assert.AreEqual(CamelColor.Blue, camelOrder.Skip(4).First(), "camel 4");

            Assert.AreEqual(0, game.StartingPlayer, "starting player");
            Assert.AreEqual(0, game.CurrentPlayer, "current player");

            Assert.AreEqual(3, gameState.Money[0], "player 0 money");
            Assert.AreEqual(3, gameState.Money[1], "player 1 money");

            Assert.AreEqual(1, players[0].Wins, "player 0 wins");
            Assert.AreEqual(1, players[1].Wins, "player 1 wins");
        }
示例#2
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");
            }
        }
示例#3
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");
        }
示例#4
0
        public void Interface_Call_Twice()
        {
            var bot = GetTestBot();

            var runner = new CamelRunner(seed: 1);

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

            var game = runner.ComputeNewGame(steps: 2);

            Assert.AreEqual(1, bot.CalledPlayerName, "player name");
            Assert.AreEqual(1, bot.CalledLoad, "load");
            Assert.AreEqual(1, bot.CalledStart, "start");
            Assert.AreEqual(1, bot.CalledAction, "action");
            Assert.AreEqual(2, bot.CalledInform, "inform");

            Assert.AreEqual(0, bot.CalledSave, "save");
            Assert.AreEqual(0, bot.CalledWinners, "winners");
        }
示例#5
0
        public void Interface_Start()
        {
            var bot = GetTestBot();

            var runner = new CamelRunner(seed: 1);

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

            var game = runner.ComputeNewGame(steps: 0);

            Assert.AreEqual("RandomBot #1", bot.GameInfo.Players[1], "name");
            Assert.AreEqual("TestBot", bot.GameInfo.Players[0], "name");
            Assert.AreEqual(0, bot.PlayerNum, "testbot order");

            Assert.AreEqual(1, bot.CalledPlayerName, "player name");
            Assert.AreEqual(1, bot.CalledLoad, "load");
            Assert.AreEqual(1, bot.CalledStart, "start");

            Assert.AreEqual(0, bot.CalledAction, "action");
            Assert.AreEqual(0, bot.CalledInform, "inform");
            Assert.AreEqual(0, bot.CalledSave, "save");
            Assert.AreEqual(0, bot.CalledWinners, "winners");
        }