es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo guardar todas las posiciones X, Y encontradas en un solo ciclo de búsqueda de imágenes en diferentes variables?

¿Cómo guardar todas las posiciones X,Y encontradas en un solo ciclo de búsqueda de imágenes en diferentes variables?

Mi búsqueda de imágenes en un ciclo encuentra un número aleatorio de cuadrados amarillos (esta vez 3 cuadrados, a veces más). Hace clic derecho en un cuadrado amarillo que luego desaparece (lo que ayuda a encontrar el siguiente cuadrado al instante). Hace clic derecho en uno de nuevo y así sucesivamente. Se detiene el ciclo cuando no hay más cuadrados que encontrar (desaparecen uno por uno).

Funciona, pero ¿cómo guardar las 3 posiciones encontradas como 3 variables diferentes (para llamarlas más tarde)? Puedo hacerlo sin el ciclo, pero necesito el ciclo.

Estoy usando la función FINDTEXT de feiyue y no puedo cambiar el código al principio:

 # Include & lt; FindText & gt;
 z ::

 ;;; Esta es solo mi búsqueda inicial de dos imágenes para configurar mi rango de búsqueda que funciona bien.

 Text: = & quot; | & lt; wcBL_c95 & gt; 0x0D0D0D @ 0.95 $ 11.VV8GUI0A0s1U1E + EYADzk & quot;
 si (ok: = FindText (aX, aY, 0, 0, 1918, 1078, 0, 0, Text))

 Text: = & quot; | & lt; wcTR_c95 & gt; 0x0D0D0D @ 0.95 $ 11.zy64V + 1E0k3U6050d2Ekk & quot;
 si (ok: = FindText (bX, bY, 0, 0, 1918, 1078, 0, 0, Text))

 ;;; === & gt; Las 4 líneas anteriores buscan las coordenadas en mi pantalla para mirar. Puede ignorar esta parte, pero esto me da el RANGO de coordenadas para hacer mi búsqueda en bucle como se ve a continuación: aX, bY, bX, aY

 Loop {
     Text: = & quot; | & lt; wc _c100 & gt; 0xD9D4D4 @ 1.00 $ 6.SzzzzSU & quot;

     si (ok: = FindText (VarX, VarY, aX + 11, bY, bX - 11, ay, 0, 0, Text)) {

         MouseClick, Right, X, Y, 1, 1 ; Este ciclo encuentra 3 cuadrados.
         VarX1: =% X
         VarY1: =% Y ; ¿Cómo puedo incrementar estos para los siguientes ciclos?
     } else break
 }

 MouseMove, VarX1, VarY1, 1

 sleep, 333

 MouseMove, VarX2, VarY2, 1 ; No existe (necesito incrementar las variables en el ciclo - ¡AYUDA!)

 sleep, 333

 MouseMove, VarX3, VarY3, 1 ; No existe (necesito incrementar las variables en el ciclo - ¡AYUDA!)

 Return
Tags:  ,

Answer

  1. Avatar for davy.ai

    Para guardar todas las posiciones X e Y encontradas en un ciclo de búsqueda de imagen en diferentes variables, puede utilizar un arreglo para almacenar las posiciones X e Y. Inicialice el arreglo antes de comenzar el ciclo y use una variable para incrementar el índice del arreglo dentro del ciclo. Aquí hay un ejemplo de código para lograr esto:

    #Incluir <findtext>
    
    z::
    Text:="|<wcbl_c95>0x0D0D0D@0.95$11.VV8GUI0A0s1U1E+EYADzk"
    if (ok:=FindText(aX, aY, 0, 0, 1918, 1078, 0, 0, Text))
    
    Text:="|<wctr_c95>0x0D0D0D@0.95$11.zy64V+1E0k3U6050d2Ekk"
    if (ok:=FindText(bX, bY, 0, 0, 1918, 1078, 0, 0, Text))
    
    ;; Configurar el arreglo para almacenar las posiciones
    posiciones := []
    
    ;; Ciclo para encontrar todos los cuadrados amarillos
    Loop
    {
        Text:="|<wc_c100>0xD9D4D4@1.00$6.SzzzzSU"
    
        if (ok:=FindText(VarX, VarY, aX+11, bY, bX-11, aY, 0, 0, Text))
        {
            ;; Agregar posiciones X e Y al arreglo
            posiciones.Push([VarX, VarY])
            MouseClick, Right, X, Y, 1, 1
        }
        else
        {
            ;; No se encontraron más cuadrados, salir del ciclo
            break
        }
    }
    
    ;; Acceder a las posiciones guardadas en el arreglo
    VarX1 := posiciones[0][0]
    VarY1 := posiciones[0][1]
    
    VarX2 := posiciones[1][0]
    VarY2 := posiciones[1][1]
    
    VarX3 := posiciones[2][0]
    VarY3 := posiciones[2][1]
    
    ;; Usar las posiciones guardadas
    MouseMove, VarX1, VarY1, 1
    sleep, 333
    MouseMove, VarX2, VarY2, 1
    sleep, 333
    MouseMove, VarX3, VarY3, 1
    
    Return
    

    En el código anterior, inicializamos un arreglo vacío llamado posiciones. Dentro del ciclo, utilizamos el método Push para agregar cada posición X e Y al arreglo como una nueva submatriz. Después del ciclo, accedemos a cada posición guardada indexando en el arreglo utilizando la sintaxis posiciones[i][j], donde i es el índice de posición (comenzando desde 0) y j es 0 para valores X y 1 para valores Y.

Comments are closed.