示例#1
0
 public static Busca obterInstancia()
 {
     if (Busca.objColeta == null)
     {
         Busca.objColeta = new Busca();
     }
     return(Busca.objColeta);
 }
示例#2
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);
        }
示例#3
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);
            }
        }