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"; }
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")); } }