Пример #1
0
        private static void Main(string[] args)
        {
            AbstractAgent MCTSAgent = new AlvaroAgent(2, 1000, "MaxVictoriesOverVisited", 10, "UCB1", 1, "GreedyPolicy", 1.0, "LinearEstimation", 1,
                                                      "0.569460712743", "0.958111820041", "0.0689492467097", "0.0", "0.843573987219", "0.700225423688", "0.907680353441", "0.0",
                                                      "0.993682660717", "1.0", "0.640753949511", "0.992872512338", "0.92870036875", "0.168100484322", "0.870080107454",
                                                      "0.0", "0.42897762808", "1.0", "0.0", "0.583884736646", "0.0", 0.7f, 0.4f, 0.4f, 0.9f, 0.4f, 0.01f, 0.02f, 0.4f, 0.3f, 0.8f, 0.5f, 0.4f, 0.5f);

            AbstractAgent MCTSAgent2 = new AlvaroAgent(2, 1000, "MaxVictoriesOverVisited", 0.1f, "UCB1", 1, "GreedyPolicy", 1.0, "GradualEstimation", 1,
                                                       "0.569460712743", "0.958111820041", "0.0689492467097", "0.0", "0.843573987219", "0.700225423688", "0.907680353441", "0.0",
                                                       "0.993682660717", "1.0", "0.640753949511", "0.992872512338", "0.92870036875", "0.168100484322", "0.870080107454",
                                                       "0.0", "0.42897762808", "1.0", "0.0", "0.583884736646", "0.0", 0.7f, 0.4f, 4.5f, 0.9f, 2.5f, 0.08f, 0.02f, 0.4f, 0.3f, 0.8f, 0.5f, 0.4f, 0.5f);

            AbstractAgent MCTSAgent3 = new AlvaroAgent(2, 1000, "MaxVictoriesOverVisited", 1, "UCB1", 3, "RandomPolicy", 1.0, "LinearEstimation", 1,
                                                       "0.569460712743", "0.958111820041", "0.0689492467097", "0.0", "0.843573987219", "0.700225423688", "0.907680353441", "0.0",
                                                       "0.993682660717", "1.0", "0.640753949511", "0.992872512338", "0.92870036875", "0.168100484322", "0.870080107454",
                                                       "0.0", "0.42897762808", "1.0", "0.0", "0.583884736646", "0.0", 0.7f, 0.4f, 0.4f, 0.9f, 0.4f, 0.01f, 0.02f, 0.4f, 0.3f, 0.8f, 0.5f, 0.4f, 0.5f);

            AbstractAgent MCTSAgent4 = new AlvaroAgent(2, 1000, "MaxVictories", 0.1, "UCB1Heuristic", 1, "GreedyPolicy", 1.0, "LinearEstimation", 1,
                                                       "0.569460712743", "0.958111820041", "0.0689492467097", "0.0", "0.843573987219", "0.700225423688", "0.907680353441", "0.0",
                                                       "0.993682660717", "1.0", "0.640753949511", "0.992872512338", "0.92870036875", "0.168100484322", "0.870080107454",
                                                       "0.0", "0.42897762808", "1.0", "0.0", "0.583884736646", "0.0", 0.7f, 0.4f, 0.4f, 0.9f, 0.4f, 0.01f, 0.02f, 0.4f, 0.3f, 0.8f, 0.5f, 0.4f, 0.5f);

            AbstractAgent MCTSAgent5 = new AlvaroAgent(2, 1000, "MaxVictoriesOverVisited", 0.35f, "UCB1Heuristic", 10, "RandomPolicy", 1.0, "LinearEstimation", 1,
                                                       "0.569460712743", "0.958111820041", "0.0689492467097", "0.0", "0.843573987219", "0.700225423688", "0.907680353441", "0.0",
                                                       "0.993682660717", "1.0", "0.640753949511", "0.992872512338", "0.92870036875", "0.168100484322", "0.870080107454",
                                                       "0.0", "0.42897762808", "1.0", "0.0", "0.583884736646", "0.0", 0.7f, 0.4f, 0.4f, 0.9f, 0.4f, 0.01f, 0.02f, 0.4f, 0.3f, 0.8f, 0.5f, 0.4f, 0.5f);

            AbstractAgent GreedyAgent = new ParametricGreedyAgent("0.569460712743#0.958111820041#0.0689492467097#0.0#0.843573987219#0.700225423688#0.907680353441#0.0#0.993682660717#" +
                                                                  "1.0#0.640753949511#0.992872512338#0.92870036875#0.168100484322#0.870080107454#0.0#0.42897762808#1.0#0.0#0.583884736646#0.0");
            AbstractAgent TycheAgent = new TycheAgentCompetition(1f);

            List <AbstractAgent> agents = new List <AbstractAgent> {
                GreedyAgent, TycheAgent, MCTSAgent, MCTSAgent2, MCTSAgent3, MCTSAgent4, MCTSAgent5
            };

            DeckManager manager = new DeckManager();
            List <List <SabberStoneCore.Model.Card> > decks = new List <List <SabberStoneCore.Model.Card> > {
                manager.AggroShaman, manager.MidRangeHunter, manager.ControlWarrior
            };
            List <CardClass> cardClassList = new List <CardClass> {
                CardClass.SHAMAN, CardClass.HUNTER, CardClass.WARRIOR
            };

            Tournaments tournament = new Tournaments(true, true, true, true, 13, agents, decks, cardClassList);
        }
Пример #2
0
        private static void Main(string[] args)
        {
            args[0] = args[0].ToLower();
            //Console.WriteLine("Testing? If yes, enter y. Otherwise, enter anything else\n");
            //string test = Console.ReadLine();

            //if (test == "y")
            //{
            //	var tests = new Testing();
            //}

            CardClass p1;
            CardClass p2;
            Deck      d1;
            Deck      d2;

            switch (args[0])
            {
            case "druid":
                p1 = CardClass.DRUID;
                d1 = Decks.BasicDruid;
                break;

            case "hunter":
                p1 = CardClass.HUNTER;
                d1 = Decks.BasicHunter;
                break;

            case "mage":
                p1 = CardClass.MAGE;
                d1 = Decks.BasicMage;
                break;

            case "paladin":
                p1 = CardClass.PALADIN;
                d1 = Decks.BasicPaladin;
                break;

            case "priest":
                p1 = CardClass.PRIEST;
                d1 = Decks.BasicPriest;
                break;

            case "rogue":
                p1 = CardClass.ROGUE;
                d1 = Decks.BasicRogue;
                break;

            case "shaman":
                p1 = CardClass.SHAMAN;
                d1 = Decks.BasicShaman;
                break;

            case "warlock":
                p1 = CardClass.WARLOCK;
                d1 = Decks.BasicWarlock;
                break;

            case "warrior":
                p1 = CardClass.WARRIOR;
                d1 = Decks.BasicWarrior;
                break;

            default:
                p1 = CardClass.INVALID;
                p2 = CardClass.INVALID;
                d1 = null;
                d2 = null;
                throw new ArgumentException($"Player1 Hero Class is invalid, must be either:\n" +
                                            $"Druid\n" +
                                            $"Hunter\n" +
                                            $"Mage\n" +
                                            $"Paladin\n" +
                                            $"Priest\n" +
                                            $"Rogue\n" +
                                            $"Shaman\n" +
                                            $"Warlock\n" +
                                            $"Warrior");
            }

            switch (args[1])
            {
            case "druid":
                p2 = CardClass.DRUID;
                d2 = Decks.BasicDruid;
                break;

            case "hunter":
                p2 = CardClass.HUNTER;
                d2 = Decks.BasicHunter;
                break;

            case "mage":
                p2 = CardClass.MAGE;
                d2 = Decks.BasicMage;
                break;

            case "paladin":
                p2 = CardClass.PALADIN;
                d2 = Decks.BasicPaladin;
                break;

            case "priest":
                p2 = CardClass.PRIEST;
                d2 = Decks.BasicPriest;
                break;

            case "rogue":
                p2 = CardClass.ROGUE;
                d2 = Decks.BasicRogue;
                break;

            case "shaman":
                p2 = CardClass.SHAMAN;
                d2 = Decks.BasicShaman;
                break;

            case "warlock":
                p2 = CardClass.WARLOCK;
                d2 = Decks.BasicWarlock;
                break;

            case "warrior":
                p2 = CardClass.WARRIOR;
                d2 = Decks.BasicWarrior;
                break;

            default:
                p2 = CardClass.INVALID;
                d2 = null;
                throw new ArgumentException($"Player2 Hero Class is invalid, must be either:\n" +
                                            $"Druid\n" +
                                            $"Hunter\n" +
                                            $"Mage\n" +
                                            $"Paladin\n" +
                                            $"Priest\n" +
                                            $"Rogue\n" +
                                            $"Shaman\n" +
                                            $"Warlock\n" +
                                            $"Warrior");
            }

            Console.WriteLine("Setup gameConfig");

            //AbstractAgent player1 = new MCTSAgent();
            AbstractAgent player1 = new TycheAgentCompetition(p1, p2, d1);
            //AbstractAgent player1 = new RandomAgent();
            AbstractAgent player2 = new TycheAgentCompetition(p2, p1, d2);

            var rnd        = new Random();
            var gameConfig = new GameConfig
            {
                StartPlayer      = rnd.Next(1, 2),
                Player1HeroClass = CardClass.PALADIN,
                Player1Name      = "Tyche Paladin",
                Player1ModelDeck = Decks.BasicPaladin,
                Player1Health    = 30,
                //Player1HeroClass = CardClass.HUNTER,
                //Player1Deck = Decks.MidrangeSecretHunter,
                Player2HeroClass = CardClass.MAGE,
                Player2ModelDeck = Decks.BasicMage,
                Player2Name      = "Tyche Mage",
                Player2Health    = 30,
                Shuffle          = true,
                Logging          = true,
                History          = false
                                   //SkipMulligan = false
            };

            Console.WriteLine("Setup POGameHandler");

            var gameHandler = new POGameHandler(gameConfig, player1, player2);

            Console.WriteLine("PlayGame");
            //gameHandler.PlayGame();
            gameHandler.PlayGames(10);
            //GameStats gameStats = gameHandler.getGameStats();

            //gameStats.printResults();

            Console.WriteLine("Test successful");
            Console.ReadLine();
        }