示例#1
0
        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());
            }
        }
示例#2
0
        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!");
        }
示例#3
0
        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!");
        }
示例#4
0
        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());
            }
        }
示例#5
0
        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);
            }
        }
示例#6
0
        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);
        }
示例#7
0
        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);
            }
        }