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