private void ReprovarJogo(MotivoReprovacao motivo) { jogosReprovados++; switch (motivo) { case MotivoReprovacao.COINCIDENCIA: repCoincidencias++; break; case MotivoReprovacao.ESTILO: repEstilo++; break; case MotivoReprovacao.ESTILO_IMPAR_PAR: repEstiloImparPar++; break; case MotivoReprovacao.EXISTENTE: repExistente++; break; case MotivoReprovacao.INTERVALO: repIntervalo++; break; case MotivoReprovacao.PARES_IMPARES: repParesImpares++; break; case MotivoReprovacao.SEQUENCIA: repSequencia++; break; } }
public void AdicionarJogoReprovado(Jogo jogo, MotivoReprovacao motivo, List <ValidadorGenerico> validadores) { DataTable gerados = ds.Tables["REPROVADOS"]; DataRow linha = gerados.NewRow(); linha["UUID"] = Guid.NewGuid(); linha["DATA_HORA"] = DateTime.Now; linha["BOLA01"] = jogo.Bola01; linha["BOLA02"] = jogo.Bola02; linha["BOLA03"] = jogo.Bola03; linha["BOLA04"] = jogo.Bola04; linha["BOLA05"] = jogo.Bola05; linha["BOLA06"] = jogo.Bola06; linha["BOLA07"] = jogo.Bola07; linha["BOLA08"] = jogo.Bola08; linha["BOLA09"] = jogo.Bola09; linha["BOLA10"] = jogo.Bola10; linha["BOLA11"] = jogo.Bola11; linha["BOLA12"] = jogo.Bola12; linha["BOLA13"] = jogo.Bola13; linha["BOLA14"] = jogo.Bola14; linha["BOLA15"] = jogo.Bola15; linha["BOLA16"] = jogo.Bola16; linha["BOLA17"] = jogo.Bola17; linha["BOLA18"] = jogo.Bola18; linha["MOTIVO"] = motivo; StringBuilder sb = new StringBuilder(); foreach (ValidadorGenerico validator in validadores) { sb.Append(validator.ToString()).Append(System.Environment.NewLine); } linha["REGRAS"] = sb.ToString(); gerados.Rows.Add(linha); jogo.AnalisarJogo(); }
private void OnJogoReprovado(object sender, JogoReprovadoArgs args) { MotivoReprovacao motivo = args.MotivoReprovacao; switch (motivo) { case MotivoReprovacao.COINCIDENCIA: lbCoincidencias.Text = ValidadorGeral.FATOR_COINCIDENCIA + "+ bolas coincidentes em outro jogo: " + gerador.RepCoincidencias.ToString("###,###,###,###,###,###,##0"); break; case MotivoReprovacao.ESTILO: lbEstiloJogo.Text = "Estilo do jogo: " + gerador.RepEstilo.ToString("###,###,###,###,###,###,##0"); break; case MotivoReprovacao.ESTILO_IMPAR_PAR: lbEstiloParesImpares.Text = "Estilo pares/ímpares: " + gerador.RepEstiloImparPar.ToString("###,###,###,###,###,###,##0"); break; case MotivoReprovacao.EXISTENTE: lbJogoGerado.Text = "Jogo já sorteado ou gerado: " + gerador.RepExistente.ToString("###,###,###,###,###,###,##0"); break; case MotivoReprovacao.INTERVALO: lbTamanhoIntervalo.Text = "Tamanho do intervalo: " + gerador.RepIntervalo.ToString("###,###,###,###,###,###,##0"); break; case MotivoReprovacao.PARES_IMPARES: lbDistribuicaoParesImpares.Text = "Distribuição de pares e ímpares: " + gerador.RepParesImpares.ToString("###,###,###,###,###,###,##0"); break; case MotivoReprovacao.SEQUENCIA: lbTamanhoSequencia.Text = "Tamanho da sequência: " + gerador.RepSequencia.ToString("###,###,###,###,###,###,##0"); break; } Application.DoEvents(); }
public JogoReprovadoArgs(MotivoReprovacao motivoReprovacao) { this.MotivoReprovacao = motivoReprovacao; }
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")); } }