private static void WriteGameResults() { Player player1 = new Player(new UshtonStrategy(), "u"); Player player2 = new Player(new ZenStrategy(), "zen"); Player player3 = new Player(new BasicStrategy(), "b"); Deck deck; if (seed != -1) { lock (lockObject) { deck = new Deck(1, seed++); } } else { deck = new Deck(1); } IList <Player> players = new List <Player>(); players.Add(player1); players.Add(player2); players.Add(player3); foreach (Player player in players) { player.SetDeck(deck); } BlackJackGame game = new BlackJackGame(players, deck, 50.0); //int roundsToPlay = 50000; PlayOutRounds(game, rounds); double approxHours = game.ApproximateHoursOfPlay(rounds); lock (lockObject) { foreach (Player player in players) { Console.WriteLine("---------------------------------------------------"); Console.WriteLine("Name: " + player.name); Console.WriteLine("Balance: " + player.Balance); Console.WriteLine("Rate: " + (double)player.Balance / approxHours); if (!results.ContainsKey(player.name)) { results.Add(player.name, new Results()); } results[player.name].Balance += player.Balance; for (int i = -25; i < 25; i++) { //Console.WriteLine("Win rate at count = " + i + " :" + player.GetWinAmountFor(i)); results[player.name].AddWinAmountAtCount(i, player.GetWinAmountFor(i)); results[player.name].AddInsuranceWinAmountAtCount(i, player.GetInsuranceWinAmountFor(i)); //Console.WriteLine("Insurance rate at count = " + i + " :" + player.GetInsuranceWinAmountFor(i)); } } threadsDone++; if (threadsDone == 4) { OnThreadComplete(); } avgCardsPlayed += game.AverageCardsLeft(); } }