private void GerarMaosSuited()
        {
            for (uint i = 2; i < 14; i++)
            {
                for (uint j = i + 1; j <= 14; j++)
                {
                    IProbabilidadeMaoInicial probMao = new ProbabilidadeMaoInicial()
                    {
                        NumCarta1   = i,
                        NumCarta2   = j,
                        OffOrSuited = 'S',
                        QuantidadesJogosSimulados = this.QuantidadeJogosPorSimulacao
                    };

                    if (ProbabilidadeMaoInicialContext.JaExisteProbabilidadeCadastrada(probMao))
                    {
                        continue;
                    }

                    Carta[] maoSuited = new Carta[] {
                        new Carta(i, Enuns.Naipe.Copas),
                        new Carta(j, Enuns.Naipe.Copas)
                    };

                    string chaveMaoSuited = maoSuited[0].ToString() + " " + maoSuited[1].ToString();

                    probMao.ProbabilidadeVitoria = AvaliaProbabilidadeMao.GetRecalculaVitoria(maoSuited, this.QuantidadeJogosPorSimulacao);

                    ProbabilidadeMaoInicialContext.Persiste(probMao);
                }
            }
        }
        private void GerarMaosOff()
        {
            for (uint i = 2; i <= 14; i++)
            {
                for (uint j = i; j <= 14; j++)
                {
                    IProbabilidadeMaoInicial probMao = new ProbabilidadeMaoInicial()
                    {
                        NumCarta1   = i,
                        NumCarta2   = j,
                        OffOrSuited = 'O',
                        QuantidadesJogosSimulados = this.QuantidadeJogosPorSimulacao
                    };

                    if (ProbabilidadeMaoInicialContext.JaExisteProbabilidadeCadastrada(probMao))
                    {
                        continue;
                    }

                    Carta[] maoOff = new Carta[] {
                        new Carta(i, Enuns.Naipe.Copas),
                        new Carta(j, Enuns.Naipe.Espadas)
                    };

                    probMao.ProbabilidadeVitoria = AvaliaProbabilidadeMao.GetRecalculaVitoria(maoOff, this.QuantidadeJogosPorSimulacao);

                    ProbabilidadeMaoInicialContext.Persiste(probMao);
                }
            }
        }
        public IList <ISimulacaoCallPreFlop> GeraListaGanhosPerdas(int idGrupo)
        {
            IList <IMaoBasica>            listaMao       = MaoBasica.GetTodasMaosPossiveis();
            IList <ISimulacaoCallPreFlop> listaSimulacao = new List <ISimulacaoCallPreFlop>();
            IJogador banca = new Banca(this.Config);
            IRetornaProbabilidade retornaProbabilidade = new RecuperarProbabilidade();

            Comum.Mesa         m       = new Comum.Mesa(this.Config);
            IList <IMaoBasica> novaMao = new List <IMaoBasica>();

            //foreach (IMaoBasica mao in listaMao)
            //    if (mao.NumCarta1 > 10) novaMao.Add(mao);
            //listaMao = novaMao;


            foreach (IMaoBasica mao in listaMao)
            {
                ISimulacaoCallPreFlop simulacao = new SimulacaoCallPreFlop()
                {
                    IdGrupo = idGrupo,
                    ProbabilidadeMaoInicial = ProbabilidadeMaoInicialContext.GetItem(mao),
                    MaoBasica = mao,
                    QuantidadeJogosSimuladosPretendidos = this.QuantidadeJogosSimuladosPretendidos,
                    StackInicial             = this.StackInicial,
                    QuantidadeJogosSimulados = 0,
                    QuantidadeJogosGanhos    = 0,
                    QuantidadeJogosPerdidos  = 0,
                    QuantidadeJogosEmpatados = 0,
                    RaiseFlop     = false,
                    RaiseFlopTurn = false
                };

                IJogador jogador = new JogadorProbabilistico(
                    this.Config,
                    this.GetAcaoProbabilidade(simulacao.ProbabilidadeMaoInicial),
                    retornaProbabilidade,
                    this.StackInicial
                    );

                ICroupier croupier = new Croupier(new CroupierConstructParam()
                {
                    Jogador           = jogador,
                    Banca             = banca,
                    ConfiguracaoPoker = this.Config
                }
                                                  );

                simulacao = this.SimulaJogosUmaMao(simulacao, croupier, jogador);

                SimulacaoCallPreFlopProbabilidadeContext.Persiste(simulacao);

                Console.WriteLine(mao.NumCarta1 + " " + mao.NumCarta2 + " - " + mao.OffOrSuited);
            }

            return(listaSimulacao);
        }
 public void Salvar()
 {
     ProbabilidadeMaoInicialContext.Persiste(this.ProbabilidadesMaos);
 }
 public IList <IProbabilidadeMaoInicial> Carregar() =>
 ProbabilidadeMaoInicialContext.GetMaosProbabilidadesIniciais((int)this.QuantidadeJogosPorSimulacao);