Ejemplo n.º 1
0
        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();
            }
        }