예제 #1
0
        public void Analisar(object arg)
        {
            if (arg.GetType() != typeof(Jogo))
            {
                throw new ArgumentException("O objeto informado deve ser do tipo Jogo.");
            }

            int anterior       = -1;
            int sequenciaAtual = 0;

            // Zerando atributos
            MaiorSequencia           = 0;
            EstiloSequencias         = "";
            MaiorIntervalo           = 0;
            EstiloSequenciasCompleto = "";
            ImparPar = "";

            Pares   = 0;
            Impares = 0;

            Jogo jogo = (Jogo)arg;

            foreach (int bola in jogo.Bolas)
            {
                if (bola % 2 == 0)
                {
                    Pares++;
                }
                else
                {
                    Impares++;
                }

                EstiloImparPar += bola % 2 == 0 ? "P" : "I";

                if (anterior == -1)
                {
                    sequenciaAtual = 1;
                    MaiorSequencia = 1;
                    anterior       = bola;
                    continue;
                }

                if (bola == (anterior + 1))
                {
                    sequenciaAtual++;
                    MaiorSequencia += sequenciaAtual > MaiorSequencia ? 1 : 0;
                }
                else
                {
                    EstiloSequencias         += sequenciaAtual + "B ";
                    EstiloSequenciasCompleto += sequenciaAtual + "B " + (bola - anterior) + "I ";
                    sequenciaAtual            = 1;
                }

                MaiorIntervalo = (bola - anterior > MaiorIntervalo) ? bola - anterior : MaiorIntervalo;

                anterior = bola;
            }
            ImparPar                  = Pares + "P" + Impares + "I";
            EstiloSequencias         += sequenciaAtual + "B";
            EstiloSequenciasCompleto += sequenciaAtual + "B";
        }
예제 #2
0
        public void GerarJogos(int quantidadeJogos, int quantidadeNumeros)
        {
            DateTime inicio = DateTime.Now;

            System.Diagnostics.Debug.WriteLine("Início: " + inicio.ToString("HH:m:s tt zz"));

            List <Jogo> jogosValidos = new List <Jogo>();

            ValidadorGeral validadorGeral = new ValidadorGeral();

            ZerarContadores();
            try {
                if (jogosPassados == null)
                {
                    jogosPassados = Banco.ObterJogosPassados();
                }

                validadorGeral.JogosPassados = jogosPassados;
                validadorGeral.BancoAnalise.AddRange(jogosPassados);

                while (jogosValidos.Count < quantidadeJogos)
                {
                    RaiseOnGerarJogo(this, new EventArgs());
                    // Gerando as bolas
                    Jogo jogo = new Jogo();
                    while (jogo.Bolas.Count < quantidadeNumeros)
                    {
                        RaiseOnBolaSorteada(this, new EventArgs());
                        Random random = new Random(Seeder());
                        int    bola   = random.Next(1, 26);
                        if (!jogo.Bolas.Contains(bola))
                        {
                            jogo.Bolas.Add(bola);
                        }
                    }

                    jogo.Bolas.Sort();
                    for (int i = 1; i <= jogo.Bolas.Count; i++)
                    {
                        PropertyInfo propertyInfo = jogo.GetType().GetProperty("Bola" + i.ToString("00"));
                        propertyInfo.SetValue(jogo, jogo.Bolas[i - 1], null);
                    }

                    jogo.AnalisarJogo();

                    // Verificações para validação do jogo
                    MotivoReprovacao  motivo    = validadorGeral.Validar(jogo);
                    ValidadorGenerico validador = null;
                    if (motivo == MotivoReprovacao.NENHUM)
                    {
                        foreach (ValidadorGenerico validator in Validadores)
                        {
                            motivo = validator.Validar(jogo);
                            if (motivo == MotivoReprovacao.NENHUM)
                            {
                                validador = validator;
                                Banco.AdicionarJogoGerado(jogo, validador);
                                Banco.Salvar();
                                break;
                            }
                        }
                    }

                    if (motivo != MotivoReprovacao.NENHUM)
                    {
                        Banco.AdicionarJogoReprovado(jogo, motivo, Validadores);
                        Banco.Salvar();
                        RaiseOnJogoReprovado(this, new JogoReprovadoArgs(motivo));
                    }
                    else
                    {
                        RaiseOnJogoAprovado(this, new JogoAprovadoArgs(jogo, validador));
                    }
                }


                DateTime fim = DateTime.Now;
                System.Diagnostics.Debug.WriteLine("Fim: " + fim.ToString("HH:m:s tt zz"));
                TimeSpan diferenca = fim - inicio;
                System.Diagnostics.Debug.WriteLine("Tempo: " + diferenca.ToString("g"));
            } catch (Exception ex) {
                System.Diagnostics.Debug.WriteLine(ex.StackTrace);

                DateTime fim = DateTime.Now;
                System.Diagnostics.Debug.WriteLine("Fim: " + fim.ToString("HH:m:s tt zz"));
                TimeSpan diferenca = fim - inicio;
                System.Diagnostics.Debug.WriteLine("Tempo: " + diferenca.ToString("g"));
            }
        }