Ejemplo n.º 1
0
        public IEnumerable <Results> CalculateResults(
            IList <JogadorHistorico> jogadores, IBestPlayerStrategy strategy, EsquemaPosicoes esquemaPosicoes)
        {
            var maxRound = jogadores.Max(x => x.RodadaId);

            for (int round = 0; round < maxRound; round++)
            {
                if (jogadores.Any(x => x.RodadaId == round + 1))
                {
                    var team = GetTeam(round, jogadores, strategy, esquemaPosicoes);

                    if (strategy.AllowOpponents == false)
                    {
                        team = ReplaceOpponents(team, strategy, round, jogadores);
                    }

                    var result = new Results()
                    {
                        Round     = round + 1,
                        Score     = team.Sum(x => GetNextRoundScore(x)),
                        TeamPrice = team.Distinct().Sum(x => x.PrecoNum)
                    };

                    yield return(result);
                }
            }
        }
Ejemplo n.º 2
0
        public SimulateResults GetSimulate(
            string type, IBestPlayerStrategy strategy, EsquemaPosicoes esquemaPosicoes, IList <JogadorHistorico> jogadores = null)
        {
            var result = new SimulateResults()
            {
                Type    = $"{type} [{esquemaPosicoes.Esquema.Nome}]",
                Results = CalculateResults(jogadores ?? _players, strategy, esquemaPosicoes)
                          .ToList()
            };

            result.Mean        = result.Results.Sum(x => x.Score) / result.Results.Count;
            result.TotalScore  = result.Results.Sum(x => x.Score);
            result.PriceMean   = result.Results.Sum(x => x.TeamPrice) / result.Results.Count(x => x.TeamPrice > 0);
            result.EsquemaId   = esquemaPosicoes.EsquemaId;
            result.EsquemaNome = esquemaPosicoes.Esquema.Nome;

            return(result);
        }
Ejemplo n.º 3
0
 private IEnumerable <JogadorHistorico> GetTeam(int round, IList <JogadorHistorico> jogadores, IBestPlayerStrategy strategy, EsquemaPosicoes esquema)
 {
     return(new List <JogadorHistorico>(strategy.DoTheMagic(round, jogadores, esquema.Goleiro, 1))
            .Concat(strategy.DoTheMagic(round, jogadores, esquema.Laterais, 2))
            .Concat(strategy.DoTheMagic(round, jogadores, esquema.Zagueiros, 3))
            .Concat(strategy.DoTheMagic(round, jogadores, esquema.Meias, 4))
            .Concat(strategy.DoTheMagic(round, jogadores, esquema.Atacantes, 5))
            .Concat(strategy.DoTheMagic(round, jogadores, esquema.Tecnico, 6))
            .Concat(strategy.DoTheMagic(round, jogadores, 1)));
 }