//static readonly char sep = Path.DirectorySeparatorChar; //static string directoryPath = $"..{sep}..{sep}..{sep}AI{sep}Provincial{sep}data{sep}kingdoms{sep}"; //static string directoryPath = $"..{sep}..{sep}..{sep}AI{sep}"; static void Main(string[] args) { string directoryPath = BuyAgenda.DirectoryPath; List <int> numbers = new List <int> { -1, 2, 4, 7, 10 }; foreach (var item in new Subsets(numbers, 2)) { WriteLine(item.Aggregate("", (e, f) => e + " " + f.ToString())); } List <Card> cards = PresetGames.Get(Games.BigMoney); string first = "Tens"; var firstAgenda = new SimpleManager(directoryPath, "Tens_").LoadBest(cards); User getFirst() => new ProvincialAI(firstAgenda, first); string second = "Fives"; var secondAgenda = new CachedManager(directoryPath, 5, "Fives_").LoadBest(cards); User getSecond() => new ProvincialAI(secondAgenda, second); Game game = new Game(new User[] { getFirst(), getSecond() }, cards.GetKingdom(2), new MyLogger()); var task = game.Play(); var results = task.Result; ReadLine(); }
void StartButton_Click(object sender, EventArgs e) { GamePanel.Show(); SetKingdomPanel.Hide(); SettingsPanel.Hide(); LogTextBox.Text = ""; StartGameButton.Text = "Restart"; SetKingdomButton.Enabled = false; SettingsButton.Enabled = false; PlayAreaPanel.Controls.Clear(); PhaseLabel.Text = "Loading"; PhaseDescription.Text = "Please wait, game will be ready as soon as possible."; gameParams.Save(); if (tokenSource != null) { tokenSource.Cancel(); tokenSource = new CancellationTokenSource(); } Task.Run(() => { var human = new Human(PlayCard, GainCard, Choice, AlternativeChoice, job, gameParams.User1Name); BuyAgendaManager manager = null; switch (gameParams.AIType) { case AIType.Tens: manager = new SimpleManager(directoryPath, "Tens_"); break; case AIType.Fives: manager = new CachedManager(directoryPath, 5, "Fives_"); break; case AIType.Threes: manager = new CachedManager(directoryPath, 3, "Threes43_"); // TODO break; default: break; } var agenda = manager.LoadBest(gameParams.Cards); if (agenda == null) { Action function = () => { MessageBox.Show("There is no suitable opponent for this kingdom. \n Please try different cards or" + " different type of opponent."); StopButton_Click(sender, e); }; this.Invoke(function); return; } var ai = new ProvincialAI(agenda, gameParams.AIType.ToString()); var source = new CancellationTokenSource(); Game game = new Game(new User[] { ai, human }, gameParams.Cards.GetKingdom(2), new WindowLogger(Log), tokenSource); game.Play(int.MaxValue).ContinueWith((results) => EnableNextGame(results)); }); }
//static readonly char sep = Path.DirectorySeparatorChar; //static string directoryPath = $"..{sep}..{sep}..{sep}AI{sep}Provincial{sep}data{sep}kingdoms{sep}"; //static string directoryPath = $"..{sep}..{sep}..{sep}AI{sep}"; static void Main(string[] args) { string directoryPath = BuyAgenda.DirectoryPath; var array = new List <int[]>(); for (int i = 0; i < 33; i++) { array.Add(new int[3]); array[i][2] = i; } var threes43 = new CachedManager(directoryPath, 3, "Threes43_"); for (int i = 0; i < 100; i++) { var Cards = Enumerable.Range((int)CardType.Adventurer, 25) .Select(t => ((t, r: new ThreadSafeRandom().NextDouble()))) .OrderBy(a => a.r) .Take(10) .Select(((int type, double)a) => Card.Get((CardType)a.type)) .OrderBy(a => a.Price) .ThenBy(a => a.Name) .ToList(); foreach (var c in threes43.LoadBest(Cards).Id.ToCardList()) { array[(int)c.Type][0]++; } foreach (var c in Cards) { array[(int)c.Type][1]++; } } foreach (var c in array.OrderBy(a => (double)a[0] / a[1])) { WriteLine($"{(CardType)c[2]} {c[0]}/{c[1]}"); } ReadLine(); return; var tens = new SimpleManager(directoryPath, "Tens_"); var cards = tens.RandomKingdom(); var fives = new CachedManager(directoryPath, 5, "Fives_"); var threes = new CachedManager(directoryPath, 3, "Threes_"); var agendas = new List <BuyAgendaTournament.Tuple>(); // agendas.Add(new BuyAgendaTournament.Tuple { Agenda = tens.LoadBest(cards), Id = "tens" }); // agendas.Add(new BuyAgendaTournament.Tuple { Agenda = tens.LoadBest(cards), Id = "tens" }); agendas.Add(new BuyAgendaTournament.Tuple { Agenda = fives.LoadBest(cards), Id = "fives" }); agendas.Add(new BuyAgendaTournament.Tuple { Agenda = threes.LoadBest(cards), Id = "threes" }); var sw = new Stopwatch(); sw.Start(); agendas.Tournament(cards, gameCount); sw.Stop(); WriteLine(sw.Elapsed.TotalSeconds); agendas.ShowResults(new MyLogger()); ReadLine(); }
public static void Dispose() { EntityManager.Dispose(); CachedManager.Dispose(); }
public static void Init() { CachedManager.Init(); EntityManager.Init(); }