public override bool executarAcao() { try { Random objRandomNumber = new Random(); Win32.clicarBotaoDireito(objMatch.Location.X + objRandomNumber.Next(2, 8), objMatch.Location.Y + objRandomNumber.Next(2, 8)); Thread.Sleep(600); if (objMatch.Location.X > 100 && objMatch.Location.Y > 60) { Rectangle areaBusca = new Rectangle(objMatch.Location.X - 100, objMatch.Location.Y - 60, 200, 200); Bitmap telaOriginal = ImagemCaptura.obterInstancia().obterImagemTela(true); if (areaBusca.Width + areaBusca.X < telaOriginal.Width && areaBusca.Height + areaBusca.Y < telaOriginal.Height) { objMatch = ImagemBusca.obterInstancia().buscarImagemPorTemplate(objABotaoAcao.Imagem, Imagem.EnumRegiaoImagem.COMPLETO, areaBusca); if (objMatch.Semelhanca > 0) { Win32.clicarBotaoEsquerdo(objMatch.Location.X + 5, objMatch.Location.Y + 5); Thread.Sleep(2000); Thread.Sleep(objRecurso.Tempo); return(true); } } } return(false); } catch (System.Exception objException) { throw new System.Exception(objException.ToString()); } }
private void botaoScreenshot_Click(object sender, EventArgs e) { Bitmap telaOriginal = (Bitmap)ImagemCaptura.obterInstancia().obterImagemTela(true); telaOriginal.Save(@textBoxLocalizacaoScreenshot.Text); telaOriginal.Dispose(); MessageBox.Show("PrintScreen realizado com sucesso!"); }
private void botaoScreenshotRotacionado_Click(object sender, EventArgs e) { float anguloRotacao = 315f; Bitmap telaOriginal = (Bitmap)ImagemCaptura.obterInstancia().obterImagemTela(true); telaOriginal = ImagemTransformacao.obterInstancia().redimensionarImagem(telaOriginal, telaOriginal.Width / 2, telaOriginal.Height); telaOriginal = ImagemTransformacao.obterInstancia().rotacionarImagem(telaOriginal, anguloRotacao); telaOriginal.Save(@textBoxLocalizacaoScreenshot.Text); telaOriginal.Dispose(); MessageBox.Show("PrintScreen Rotacionado realizado com sucesso!"); }
void obterPixelPorClique(object sender, MouseEventArgs e) { try { using (Bitmap objBitmap = ImagemCaptura.obterInstancia().obterImagemTelaComo8bitesPorPixel()) { /*using (Service.Lib.LockBitmap objLockedBitmap = new Service.Lib.LockBitmap(objBitmap)) * { * objLockedBitmap.LockBits();*/ Color myColor = objBitmap.GetPixel(e.X, e.Y); ModelTela objModelTela = new ModelTela(); objModelTela.eixoHorizontal = e.Location.X; objModelTela.eixoVertical = e.Location.Y; objModelTela.pixel = Common.ColorHelper.HexConverter(myColor); panelCorPixel.BackColor = myColor; labelCor.Text = "Cor (hex): [ " + (objModelTela.pixel) + " ]"; labelEixoVerticalPixel.Text = "Eixo Vertical: [ " + objModelTela.eixoVertical + " ]"; labelEixoHorizontalPixel.Text = "Eixo Horizontal: [ " + objModelTela.eixoHorizontal + " ]"; HSLColor objCorAtualHSL = Common.Lib.HSLColor.FromRGB(myColor); labelMatiz.Text = "Matiz: " + objCorAtualHSL.Hue; labelSaturacao.Text = "Saturacao: " + objCorAtualHSL.Saturation; labelLuminosidade.Text = "Luminosidade: " + objCorAtualHSL.Luminosity; if (checkBoxCapturaContinua.Checked == false) { checkBoxCapturadorLigado.Checked = false; checkBoxVisualizarPixel.Checked = false; } if (checkBoxCapturadorLigado.Focused == false && checkBoxCapturadorLigado.Checked == true) { CapturadorPixel.armazenarCapturaComoTemplate(objModelTela, textBoxLocalizacaoPixelsCapturados.Text); CapturadorPixel.armazenarLogCaptura(objModelTela, textBoxTituloCaptura.Text, textBoxLocalizacaoPixelsCapturados.Text); } // objLockedBitmap.UnlockBits(); //} } } catch (Exception objException) { //MessageBox.Show(objException.ToString()); throw new Exception(objException.ToString()); } }
public Bitmap tratarLadoImagemParaBusca(Imagem.EnumRegiaoImagem objRegiaoImagem, Rectangle AreaBusca) { Bitmap objTemplate = new Bitmap(@"./x.bmp"); Bitmap telaCheia = (Bitmap)ImagemCaptura.obterInstancia().obterImagemTela(); float anguloRotacao = 315f; telaCheia = ImagemTransformacao.obterInstancia().redimensionarImagem(telaCheia, telaCheia.Width / 2, telaCheia.Height); telaCheia = ImagemTransformacao.obterInstancia().rotacionarImagem(telaCheia, anguloRotacao); telaCheia = ImagemTransformacao.obterInstancia().extrairRegiaoImagem(telaCheia, objRegiaoImagem, AreaBusca); if (objRegiaoImagem == Imagem.EnumRegiaoImagem.LADO_ESQUERDO) { this.telaRotacionadaLadoEsquerdo = telaCheia; telaCheia.Dispose(); return(this.telaRotacionadaLadoEsquerdo); } else { this.telaRotacionadaLadoDireito = telaCheia; telaCheia.Dispose(); return(this.telaRotacionadaLadoDireito); } }
public bool acaoIniciarBatalha() { System.Threading.Thread.Sleep(1000); System.Windows.Forms.SendKeys.SendWait(" "); System.Threading.Thread.Sleep(4000); try { Size bounds = Proporcao.obterProporcao(); if (ImagemCaptura.obterInstancia().objBitmap != null) { ImagemCaptura.obterInstancia().objBitmap.Dispose(); } Bitmap objBitmap = ImagemCaptura.obterInstancia().obterImagemTela(true); int eixoHorizontal = 275; int eixoVertical = 405; //Acrescentado 21 pixels na altura/largura do retangulo do personagem e gato, estava cortando no meio do retangulo do número. int larguraEAlturaRetangulo = 107 + 21; Rectangle retanguloPersonagem = new Rectangle(eixoHorizontal, eixoVertical, larguraEAlturaRetangulo, larguraEAlturaRetangulo); eixoHorizontal = 448; Rectangle retanguloGato = new Rectangle(eixoHorizontal, eixoVertical, larguraEAlturaRetangulo, larguraEAlturaRetangulo); Dictionary <int, Model.Match> MatchesGato = new Dictionary <int, Model.Match>(); AntiBOT objAntiBOT = new AntiBOT(); for (int numeroMatch = 1; numeroMatch <= 8; numeroMatch++) { MatchesGato.Add(numeroMatch, ImagemBusca.obterInstancia().buscarImagemPorTemplateRotacionado( objAntiBOT.numerosMatch["Numero" + numeroMatch], Imagem.EnumRegiaoImagem.RETANGULO, retanguloGato ) ); } Application.DoEvents(); List <Model.Match> Verificar = new List <Model.Match>(); List <Model.Match> NaoEncontrados = new List <Model.Match>(); //Buscar os números até encontrar pelo menos 3 do lado do gato Verificar.Clear(); foreach (Model.Match m in MatchesGato.Values) { if (m.Semelhanca > 0) { Verificar.Add(m); } else { NaoEncontrados.Add(m); } } List <Model.Match> Clicar = new List <Model.Match>(); bool conflito = false; if (Verificar.Count > 3) { for (int i = 0; i < Verificar.Count; i++) { conflito = false; for (int j = 0; j < Verificar.Count; j++) { if (i == j) { continue; } if (new Rectangle(Verificar[i].Location, new Size(24, 24)).Contains(Verificar[j].Location)) { conflito = true; if (Verificar[i].Semelhanca > Verificar[j].Semelhanca) { Clicar.Add(Verificar[i]); } else { Clicar.Add(Verificar[j]); } } } if (!conflito) { Clicar.Add(Verificar[i]); } } } else { Clicar.AddRange(Verificar); } System.Threading.Thread.Sleep(1100); foreach (Model.Match objMatch in Clicar) { //System.Threading.Thread.Sleep(2000); Model.Match matchClicar = ImagemBusca.obterInstancia().buscarImagemPorTemplateRotacionado(objAntiBOT.numerosMatch["Numero" + objMatch.Numero.ToString()], Imagem.EnumRegiaoImagem.RETANGULO, retanguloPersonagem); System.Windows.Forms.SendKeys.SendWait("1"); System.Threading.Thread.Sleep(800); Common.Lib.Win32.clicarBotaoEsquerdo(matchClicar.Location.X, matchClicar.Location.Y); } Application.DoEvents(); System.Threading.Thread.Sleep(5000); Busca.obterInstancia().validarFechamentoMensagens(); } catch (Exception objException) { MessageBox.Show(objException.Message); } return(true); }
private void checkBoxCacadorPixelsLigado_CheckedChanged(object sender, EventArgs e) { try { if (!String.IsNullOrEmpty(comboBoxTipoBusca.SelectedValue.ToString())) { CheckBox objCheckBox = (CheckBox)sender; this.checkBoxCacadorPixelsLigado.Checked = objCheckBox.Checked; this.checkBoxCacadorPixelsLigado.BackColor = Color.Gray; if (objCheckBox.Checked == true) { this.checkBoxCacadorPixelsLigado.BackColor = Color.Green; ImagemCaptura.obterInstancia().isUtilizarMascaraLuminosidade = checkBoxMascaraLuminosidade.Checked; Common.Lib.Win32.clicarBotaoEsquerdo(Screen.PrimaryScreen.Bounds.Width / 2, Screen.PrimaryScreen.Bounds.Height / 2); Camera.obterInstancia().padronizarDistanciaCamera(); // Modificar esse trecho utilizado para teste, porque está sendo validado somente por 'coleta'. Quem sabe um switch não caia melhor? if (EnumUtil.ParseEnum <EnumTipoBusca>(comboBoxTipoBusca.SelectedValue.ToString()) == EnumTipoBusca.Coleta) { ServiceRecurso objRecurso = ServiceRecurso.obterInstancia(); ServiceBotaoAcao objServiceBotaoAcao = ServiceBotaoAcao.obterInstancia(); Service.Busca objServiceBusca = Service.Busca.obterInstancia(); objServiceBusca.isAtivarModoBaixoConsumo = checkBoxAtivarBaixoConsumo.Checked; bool isMovimentarAleatoriamente = checkBoxMovimentarAleatoriamente.Checked; EnumProfissoes objEnumProfissao = EnumUtil.ParseEnum <EnumProfissoes>(comboBoxProfissao.SelectedValue.ToString()); List <AViewModelColeta> listaColetas = new List <AViewModelColeta>(); for (int indice = 0; indice < this.IndiceUltimaAcao; indice++) { ComboBox comboboxRecurso = (ComboBox)this.obterControlPorName(this, "comboBoxRecurso_" + indice.ToString()); ComboBox comboboxAcao = (ComboBox)this.obterControlPorName(this, "comboBoxAcao_" + indice.ToString()); string nomeRecurso = ((KeyValuePair <string, string>)comboboxRecurso.SelectedItem).Key; string nomeAcao = ((KeyValuePair <string, string>)comboboxAcao.SelectedItem).Key; ABotaoAcao botaAcao = objServiceBotaoAcao.obterBotaoAcao(nomeAcao); AViewModelColeta objAViewModelColeta = new Colheita(); if (botaAcao != null && botaAcao is IPlantio) { objAViewModelColeta = new Plantio(); } objAViewModelColeta.objRecurso = objRecurso.obterRecurso(nomeRecurso, objEnumProfissao); objAViewModelColeta.objABotaoAcao = botaAcao; listaColetas.Add(objAViewModelColeta); } // Responsável por permitir que o loop consiga ser encerrado utilizando as hotkeys ou clique no botão. Task.Factory.StartNew(() => { while (this.checkBoxCacadorPixelsLigado.Checked) { bool isSucessoNaColeta = true; foreach (AViewModelColeta objAViewModelColeta in listaColetas) { isSucessoNaColeta = true; while (isSucessoNaColeta && this.checkBoxCacadorPixelsLigado.Checked) { isSucessoNaColeta = objServiceBusca.buscar(objAViewModelColeta); } } if (!isSucessoNaColeta && isMovimentarAleatoriamente && this.checkBoxCacadorPixelsLigado.Checked) { Personagem.obterInstancia().movimentarAleatoriamente(); Thread.Sleep(800); } } }); } } } else { MessageBox.Show("Preencha os campos obrigatórios."); } } catch (Exception objException) { MessageBox.Show(objException.Message); } }