示例#1
0
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");


            // Instantiate a RatingCalculator object.
            // At instantiation, you can set the default rating for a player's volatility and
            // the system constant for your game ("τ", which constrains changes in volatility
            // over time) or just accept the defaults.
            var calculator = new RatingCalculator(/* initVolatility, tau */);

            // Instantiate a Rating object for each player.
            var player1 = new Rating(calculator /* , rating, ratingDeviation, volatility */);
            var player2 = new Rating(calculator /* , rating, ratingDeviation, volatility */);
            var player3 = new Rating(calculator /* , rating, ratingDeviation, volatility */);

            // Instantiate a RatingPeriodResults object.
            var results = new RatingPeriodResults();

            // Add game results to the RatingPeriodResults object until you reach the end of your rating period.
            // Use addResult(winner, loser) for games that had an outcome.
            results.AddResult(player1, player2);
            // Use addDraw(player1, player2) for games that resulted in a draw.
            results.AddDraw(player1, player2);
            // Use addParticipant(player) to add players that played no games in the rating period.
            results.AddParticipant(player3);

            // Once you've reached the end of your rating period, call the updateRatings method
            // against the RatingCalculator; this takes the RatingPeriodResults object as argument.
            //  * Note that the RatingPeriodResults object is cleared down of game results once
            //    the new ratings have been calculated.
            //  * Participants remain within the RatingPeriodResults object, however, and will
            //    have their rating deviations recalculated at the end of future rating periods
            //    even if they don't play any games. This is in-line with Glickman's algorithm.
            calculator.UpdateRatings(results);

            // Access the getRating, getRatingDeviation, and getVolatility methods of each
            // player's Rating to see the new values.
            var players = new[] { player1, player2, player3 };

            for (var index = 0; index < players.Length; index++)
            {
                var player = players[index];
                Console.WriteLine("Player #" + index + " values: " + player.GetRating() + ", " +
                                  player.GetRatingDeviation() + ", " + player.GetVolatility());
            }
        }
示例#2
0
 public async Task LoadPlayersAsync(string filename)
 {
     using (StreamReader infile = new StreamReader(filename))
     {
         string line;
         while ((line = await infile.ReadLineAsync()) != null)
         {
             string[] info   = line.Split(',');
             Rating   player = new Rating(
                 calculator,
                 double.Parse(info[1]),
                 double.Parse(info[2]),
                 double.Parse(info[3])
                 );
             results.AddParticipant(player);
             playerlist.Add(info[0], player);
         }
     }
 }