private Game SimulateGame() { var p = GameParameters.Simulation(GetDeck("deck1.dec"), GetDeck("deck2.dec"), new SearchParameters(15, 2, SearchPartitioningStrategies.SingleThreaded)); var game = new Game(p); game.Start(numOfTurns: 5); return(game); }
private static void SimulateGame(Deck deck1, Deck deck2, SimulationResult result, int maxTurnsPerGame, int maxSearchDepth, int maxTargetsCount) { var stopwatch = new Stopwatch(); var game = new Game(GameParameters.Simulation(deck1, deck2, new SearchParameters(maxSearchDepth, maxTargetsCount, SearchPartitioningStrategies.SingleThreaded))); game.Ai.SearchStarted += delegate { result.TotalSearchCount++; stopwatch.Start(); }; game.Ai.SearchFinished += delegate { stopwatch.Stop(); if (stopwatch.Elapsed > result.MaxSearchTime) { result.MaxSearchTime = stopwatch.Elapsed; } stopwatch.Reset(); }; game.Start(numOfTurns: maxTurnsPerGame); result.TotalTurnCount += game.Turn.TurnCount; if (game.Players.BothHaveLost) { return; } if (game.Players.Player1.Score > -game.Players.Player2.Score) { result.Deck1WinCount++; return; } result.Deck2WinCount++; return; }