Exemplo n.º 1
0
        private static void ComparisonPlay()
        {
            Dominion.AI.Mathieu.Actions1 ai1 = new Dominion.AI.Mathieu.Actions1();
            IAI ai2 = new Dominion.AI.Basic();

            ai1.TuningParameters.Set("MineRatio", 0.0);
            ai1.TuningParameters.Set("MarketRatio", 0.0);
            ai1.TuningParameters.Set("MilitiaRatio", 0.25);
            ai1.TuningParameters.Set("WoodcutterRatio", 0.0);
            ai1.TuningParameters.Set("CellarRatio", 0.0);
            ai1.TuningParameters.Set("SmithyRatio", 0.0);
            ai1.TuningParameters.Set("VillageRatio", 0.0);
            ai1.TuningParameters.Set("MoatRatio", 0.0);

            int[] wins = new int[] { 0, 0 };
            int ties = 0;
            Random random = new Random();

            for (int i = 0; i < 10000; i++)
            {
                Dominion.Engine.Game game = new Dominion.Engine.Game(random);
                game.AddActionCard(typeof(Dominion.Game.Base.Cellar));
                game.AddActionCard(typeof(Dominion.Game.Base.Market));
                game.AddActionCard(typeof(Dominion.Game.Base.Militia));
                game.AddActionCard(typeof(Dominion.Game.Base.Mine));
                game.AddActionCard(typeof(Dominion.Game.Base.Moat));
                game.AddActionCard(typeof(Dominion.Game.Base.Remodel));
                game.AddActionCard(typeof(Dominion.Game.Base.Smithy));
                game.AddActionCard(typeof(Dominion.Game.Base.Village));
                game.AddActionCard(typeof(Dominion.Game.Base.Woodcutter));
                game.AddActionCard(typeof(Dominion.Game.Base.Workshop));

                int p1idx, p2idx;
                if ((i % 2) == 0)  // alternate player start for fairness
                {
                    p1idx = game.AddPlayer(ai1);
                    p2idx = game.AddPlayer(ai2);
                }
                else
                {
                    p2idx = game.AddPlayer(ai2);
                    p1idx = game.AddPlayer(ai1);
                }

                int winneridx = game.RunGame();
                if (winneridx == p1idx)
                    wins[0] += 1;
                else if (winneridx == p2idx)
                    wins[1] += 1;
                else
                    ties += 1;
            }

            System.Console.WriteLine("{0} wins for player 1 ({1})", wins[0], ai1.GetType());
            System.Console.WriteLine("{0} wins for player 2 ({1})", wins[1], ai2.GetType());
            System.Console.WriteLine("{0} ties", ties);
        }