コード例 #1
0
        public void TwoversustwoScenario()
        {
            var match = new EloMatch();
            var team1 = match.AddTeam(new EloTeam(true));

            match.AddPlayerToTeam(team1, 1230);
            match.AddPlayerToTeam(team1, 1260);
            var team2 = match.AddTeam(new EloTeam(false));

            match.AddPlayerToTeam(team2, 1120);
            match.AddPlayerToTeam(team2, 1410);
            var result = match.Calculate();

            foreach (var ir in result.GetResults(team1))
            {
                Console.WriteLine($"Team 1 - Player: {ir.PlayerIdentifier}, Rating difference: {ir.RatingDifference}");
            }

            foreach (var ir in result.GetResults(team2))
            {
                Console.WriteLine($"Team 2 - Player: {ir.PlayerIdentifier}, Rating difference: {ir.RatingDifference}");
            }

            Assert.Pass();
        }
コード例 #2
0
        public void CreateMatchDynamically_AddSamePlayer_ThrowsArgumentException()
        {
            var match          = new EloMatch();
            var teamIdentifier = match.AddTeam(new EloTeam(true));
            var player         = new EloPlayer(1200);

            match.AddPlayerToTeam(teamIdentifier, player);
            Assert.Throws <ArgumentException>(() => match.AddPlayerToTeam(teamIdentifier, player));
        }
コード例 #3
0
        public EloResult CalculateElo(Match match)
        {
            var eloMatch = new EloMatch();

            var winners = eloMatch.AddTeam(new EloTeam(true));

            foreach (var winnerPlayer in match.Winner.Players)
            {
                eloMatch.AddPlayerToTeam(winners, new EloPlayer(new EloPlayerIdentifier(winnerPlayer.Id), winnerPlayer.GetSeasonalElo(match.Season)));
            }

            var loosers = eloMatch.AddTeam(new EloTeam(false));

            foreach (var looserPlayer in match.Looser.Players)
            {
                eloMatch.AddPlayerToTeam(loosers, new EloPlayer(new EloPlayerIdentifier(looserPlayer.Id), looserPlayer.GetSeasonalElo(match.Season)));
            }

            return(eloMatch.Calculate());
        }
コード例 #4
0
        public void AddPlayerToNonExistingTeam_ThrowsInvalidOperationException()
        {
            var match = new EloMatch();

            Assert.Throws <InvalidOperationException>(() => match.AddPlayerToTeam(new EloTeamIdentifier(), 1200));
        }