def click_button(button_name):
    button_path = screenshots_dir + button_name + '.png'
    pos = imagesearch(button_path)
    img = Image.open(button_path)

    if pos[0] != -1:
        click_image(button_path, pos, "left", 0.001, offset=5)
        img.close()
        print("Clicked: " + button_name)
        return True
    else:
        img.close()
        print("NOT Clicke: " + button_name)
        return False
Exemple #2
0
 def salir_de_duelo(self):
     while True:
         if self.detener.is_set(
         ):  # Si se presiona el botón stop la busqueda se detiene
             return
         ok_button = imagesearch("images/pop_up_ok.jpg")
         next_button = imagesearch("images/Button_next.jpg")
         level_up_screen = imagesearch("images/level_up.jpg")
         dialogo = imagesearch("images/character_text.jpg")
         if ok_button[0] != -1:
             click_image("images/pop_up_ok.jpg", ok_button, "left", 0.2)
             sleep(2)
         elif next_button[0] != -1:
             click_image("images/Button_next.jpg", next_button, "left", 0.2)
             sleep(2)
         elif level_up_screen[0] != -1:
             click_image("images/level_up.jpg", level_up_screen, "left",
                         0.2)
             sleep(2)
         # Se detecta la pantalla de diálogo después del duelo y clickea hasta que el personaje
         # deja de hablar
         elif dialogo[0] != -1:
             while dialogo != [-1, -1]:
                 if self.detener.is_set(
                 ):  # Si se presiona el botón stop la busqueda se detiene
                     return
                 click_image("images/character_text.jpg", dialogo, "left",
                             0.2)
                 sleep(1)
                 dialogo = imagesearch("images/character_text.jpg")
         elif imagesearch("images/Gate.jpg")[0] != -1:
             return
Exemple #3
0
 def cambiar_puerta_a_mundo(self, mundo):
     switch_gate_button_coord = imagesearch("images/switch_gate_button.jpg")
     while switch_gate_button_coord[0] == -1:
         if self.detener.is_set():
             return
         switch_gate_button_coord = imagesearch(
             'images/switch_gate_button.jpg.jpg')
     click_image("images/switch_gate_button.jpg", switch_gate_button_coord,
                 "left", 0.2)
     if mundo == "dm":
         dm_icon = imagesearch('images/dsod_world_icon.jpg')
         while dm_icon[0] == -1:
             if self.detener.is_set():
                 return
             dm_icon = imagesearch('images/dm_world_icon.jpg')
             if dm_icon[0] != -1:
                 break
             dsod_icon = imagesearch('images/dsod_world_icon.jpg')
             moveTo(dsod_icon)
             drag(0, 50, 0.5, button="left"
                  )  # arrastra para mostrar por completo el icono del mundo
         click_image("images/dsod_world_icon.jpg", dm_icon, "left", 0.2)
     elif mundo == "dsod":
         dsod_icon = imagesearch('images/dsod_world_icon.jpg')
         while dsod_icon[0] == -1:
             if self.detener.is_set():
                 return
             dsod_icon = imagesearch('images/dsod_world_icon.jpg')
         click_image("images/dsod_world_icon.jpg", dsod_icon, "left", 0.2)
     elif mundo == "gx":
         gx_icon = imagesearch('images/gx_world_icon.jpg')
         while gx_icon[0] == -1:
             if self.detener.is_set():
                 return
             gx_icon = imagesearch('images/gx_world_icon.jpg')
         click_image("images/gx_world_icon.jpg", gx_icon, "left", 0.2)
     elif mundo == "5ds":
         _5ds_icon = imagesearch('images/5ds_world_icon.jpg')
         while _5ds_icon[0] == -1:
             if self.detener.is_set():
                 return
             _5ds_icon = imagesearch('images/5ds_world_icon.jpg')
             if _5ds_icon[0] != -1:
                 break
             gx_icon = imagesearch('images/gx_world_icon.jpg')
             moveTo(gx_icon)
             drag(0, -50, 0.5, button="left"
                  )  # arrastra para mostrar por completo el icono del mundo
         click_image("images/5ds_world_icon.jpg", _5ds_icon, "left", 0.2)
Exemple #4
0
 def clickear_puerta(self):
     if self.gate:
         coord_gate = imagesearch("images/gate_piece.jpg")
         while coord_gate[0] == -1:
             if self.detener.is_set():
                 return
             self.change_screen(to_gate=True)
             coord_gate = imagesearch("images/gate_piece.jpg")
         click_image("images/gate_piece.jpg", coord_gate, "left", 0.2)
         go_back_button = imagesearch('images/go_back_button.jpg')
         while go_back_button[0] == -1:
             if self.detener.is_set():
                 return
             click_image("images/gate_piece.jpg", coord_gate, "left", 0.2)
             sleep(2)
             go_back_button = imagesearch('images/go_back_button.jpg')
Exemple #5
0
 def buscar_en_puerta(self, duelista, nivel, mundo=None):
     if mundo == "dm":
         self.cambiar_puerta_a_mundo("dm")
     elif mundo == "dsod":
         self.cambiar_puerta_a_mundo("dsod")
     elif mundo == "gx":
         self.cambiar_puerta_a_mundo("gx")
     elif mundo == "5ds":
         self.cambiar_puerta_a_mundo("5ds")
     flecha_cambiar = imagesearch('images/flecha_cambiar_duelista.jpg')
     while flecha_cambiar[0] == -1:
         if self.detener.is_set():
             return
         flecha_cambiar = imagesearch('images/flecha_cambiar_duelista.jpg')
     nombre_duelista = imagesearch(duelista, precision=0.9)
     while nombre_duelista[0] == -1:
         if self.detener.is_set():
             return
         click_image('images/flecha_cambiar_duelista.jpg', flecha_cambiar,
                     'left', 0.2)
         sleep(2)
         nombre_duelista = imagesearch(duelista)
     nivel_duelista = imagesearch(nivel)
     if nivel_duelista[0] != -1:
         click_image(nivel, nivel_duelista, 'left', 0.2)
         coor_duel_button = imagesearch("images/duel_button.jpg")
         click_image("images/duel_button.jpg", coor_duel_button, "left",
                     0.2)
         sleep(2)
         dialogo = imagesearch("images/character_text.jpg")
         while dialogo[0] != [-1]:
             if self.detener.is_set(
             ):  # Si se presiona el botón stop la busqueda se detiene
                 return
             click_image("images/character_text.jpg", dialogo, "left", 0.2)
             sleep(1)
             dialogo = imagesearch("images/character_text.jpg")
             if imagesearch("images/duel_button.jpg")[0] != -1:
                 break
         coor_duel_button = imagesearch("images/duel_button.jpg")
         click_image("images/duel_button.jpg", coor_duel_button, "left",
                     0.2)
Exemple #6
0
 def change_screen(self, to_gate=False):
     if to_gate:
         gate_coord = imagesearch("images/Gate_off.jpg")
         if gate_coord[0] != -1:
             click_image("images/Gate_off.jpg", gate_coord, "left", 0.2)
             self.gate = True
             self.shop = False
             self.pvp_arena = False
             self.duel_studio = False
         else:
             return
     else:
         if self.gate:
             pvp_coord = imagesearch("images/pvp_arena_off.jpg")
             click_image("images/pvp_arena_off.jpg", pvp_coord, "left", 0.2)
             self.gate = False
             self.shop = False
             self.pvp_arena = True
             self.duel_studio = False
             self.npc_searched = False
         elif self.pvp_arena:
             shop_coord = imagesearch("images/shop_off.jpg")
             click_image("images/shop_off.jpg", shop_coord, "left", 0.2)
             self.gate = False
             self.shop = True
             self.pvp_arena = False
             self.duel_studio = False
         elif self.shop:
             studio_coord = imagesearch("images/duel_studio_off.jpg")
             click_image("images/shop_off.jpg", studio_coord, "left", 0.2)
             self.gate = False
             self.shop = False
             self.pvp_arena = False
             self.duel_studio = True
         elif self.duel_studio:
             gate_coord = imagesearch("images/Gate_off.jpg")
             click_image("images/Gate_off.jpg", gate_coord, "left", 0.2)
             self.gate = True
             self.shop = False
             self.pvp_arena = False
             self.duel_studio = False
             self.npc_searched = True
def click_button_area(button_name, x1, y1, x2, y2):
    button_path = screenshots_dir + button_name + '.png'
    pos = imagesearch(button_path)
    img = Image.open(button_path)

    im = region_grabber(region=(x1, y1, x2, y2))

    img_rgb = np.array(im)
    img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)
    template = cv2.imread(image, 0)

    # res = cv2.matchTemplate(img_gray, template, cv2.TM_CCOEFF_NORMED)
    # min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)

    if pos[0] != -1:
        click_image(button_path, pos, "left", 0.001, offset=5)
        img.close()
        return True
    else:
        img.close()
        return False
Exemple #8
0
                    800,
                    600,
                    precision=0.8,
                    im=im,
                    prefix="assets/img/")
    imagesearcharea("panda.png",
                    0,
                    0,
                    800,
                    600,
                    precision=0.8,
                    im=im,
                    prefix="assets/img/")
print(str(time.clock() - time1) + " seconds (optimized)")

# sample output :

# 1.6233619831305721 seconds (non optimized)
# 0.4075934110084374 seconds (optimized)

# click image is to be used after having found the image

pos = imagesearch("github.png", prefix="assets/img/")
if pos[0] != -1:
    click_image("github.png",
                pos,
                "right",
                0.2,
                prefix="assets/img/",
                offset=5)
Exemple #9
0
def click(image, pos):
    return imagesearch.click_image(image, pos, 'left', 0.25)
Exemple #10
0
 def run(self):
     # ejecuta un loop infinito buscando las imágenes de la pantalla
     while True:
         for index, imagen in enumerate(self.image_list):
             if self.detener.is_set():
                 return
             # if self.tag_check.state() == ('selected',):
             #         tag_duel = threading.Thread(target=self.tag_duel, daemon=True)
             #         tag_duel.start()
             #         tag_duel.join()
             self.pos = imagesearch(imagen, precision=0.9)
             if self.pos[0] == -1:
                 print(imagen + " not found, waiting")
                 sleep(0.1)
             else:  # Si encuentra un personaje hablando clickea hasta que
                 # se calle
                 print(self.pos[0])
                 while index == 11:
                     if self.detener.is_set():
                         return
                     if imagesearch(imagen) == [-1, -1]:
                         break
                     else:
                         click_image(imagen, imagesearch(imagen), "left",
                                     0.2)
                         sleep(1)
                 # Al encontrar una imagen de la lista de
                 # que no sean algunas de las 4 pantallas principales
                 # clickea sobre ellas
                 if index in {0, 1, 2, 3, 5, 6, 8, 12, 13}:
                     click_image(imagen, self.pos, "left", 0.2)
                 elif index in {7, 9, 10}:
                     self.change_screen(to_gate=True)
                 elif index == 4:
                     self.imprimir_texto("Gate detected")
                     self.gate = True
                     self.shop = False
                     self.pvp_arena = False
                     self.duel_studio = False
                     # checkear el mundo actual si no se ha hecho
                     if not self.world_checked:
                         checkear = threading.Thread(
                             target=self.check_world, daemon=True)
                         checkear.start()
                         checkear.join()
                     # Si el botón de buscar npc está marcado crea un nuevo hilo
                     # para hacer la busqueda de npc y haciendo que la busqueda
                     # principal de la pantalla espere a que la busqueda de npc
                     # termine
                     if self.npc_search_checkbox.state() == ('selected', ):
                         self.imprimir_texto("Buscando npc...")
                         if self.dm_world:
                             search_npc = threading.Thread(
                                 target=self.npc_search(self.npcdm_list),
                                 daemon=True)
                             search_npc.start()
                             search_npc.join()
                         elif self.gx_world:
                             search_npc = threading.Thread(
                                 target=self.npc_search(self.npcgx_list),
                                 daemon=True)
                             search_npc.start()
                             search_npc.join()
                         elif self._5ds_world:
                             search_npc = threading.Thread(
                                 target=self.npc_search(self.npc5ds_list),
                                 daemon=True)
                             search_npc.start()
                             search_npc.join()
                     if self.farm_button.state() == ('selected', ):
                         farm = threading.Thread(target=self.farm_gate,
                                                 daemon=True)
                         farm.start()
                         farm.join()
Exemple #11
0
 def npc_search(self, lista):
     npc_gate = False
     npc_pvp = False
     npc_shop = False
     npc_studio = False
     while self.npc_search_checkbox.state() == ('selected', ):
         if self.detener.is_set(
         ):  # Si se presiona el botón stop la busqueda se detiene
             return
         # Busca los npc en la pantalla dados en la lista y al encontrar uno presiona el botón
         # autoduel luego espera a que el duelo termine para regresar a la pantalla y seguir
         # buscando npc
         Image_list = lista
         for imagen in Image_list:
             if self.detener.is_set(
             ):  # Si se presiona el botón stop la busqueda se detiene
                 return
             pos = imagesearch(imagen, precision=0.9)
             if pos[0] == -1:
                 print(imagen + " not found, waiting")
             elif pos[0] != -1:
                 print("npc encontrado")
                 print(pos)
                 click_image(imagen, pos, "left", 0.2)
                 sleep(3)
                 while imagesearch("images/auto_duel_button.jpg") == [
                         -1, -1
                 ]:  # clickea hasta encontrar el botón auto-duel
                     if self.detener.is_set():
                         return
                     sleep(1)
                     if imagesearch("images/character_text.jpg") != [
                             -1, -1
                     ]:
                         click_image(
                             "images/character_text.jpg",
                             imagesearch("images/character_text.jpg"),
                             "left", 0.2)
                         sleep(1)
                     else:
                         break
                 if imagesearch("images/auto_duel_button.jpg")[0] != -1:
                     click_image("images/auto_duel_button.jpg",
                                 imagesearch("images/auto_duel_button.jpg"),
                                 "left", 0.2)  # clickea el botón autoduel
                 sleep(3)
                 # Se busca de forma constante los botones ok y next para regresar a la pantalla
                 # principal una vez finalizado el duelo
                 self.salir_de_duelo()
         self.change_screen()
         if all((npc_gate, npc_pvp, npc_shop, npc_studio)):
             print(
                 "Se ha completado la busqueda de todos los npc en este mundo"
             )
             npc_gate = False
             npc_pvp = False
             npc_shop = False
             npc_studio = False
             return
         else:
             if npc_shop:
                 npc_studio = True
             elif npc_pvp:
                 npc_shop = True
             elif npc_gate:
                 npc_pvp = True
             elif not npc_gate:
                 npc_gate = True
Exemple #12
0
 def tag_duel(self):
     while True:
         # Busca el botón "tag duel"
         tag_button = imagesearch("images/tag_duel_button.jpg")
         # Idenficamos si estamos en la pantalla de elección de la copa
         cup = imagesearch("images/choose_cup.jpg")
         while tag_button[0] == -1:
             if self.detener.is_set(
             ):  # Si se presiona el botón stop la busqueda se detiene
                 return
             # En caso de recibir premio después del duelo se buscará
             # y presionará el botón ok
             ok_button = imagesearch("images/pop_up_ok.jpg")
             if ok_button[0] != -1:
                 click_image("images/pop_up_ok.jpg", ok_button, "left", 0.2)
             elif cup[0] != -1:
                 click_image("images/pop_up_ok.jpg", cup, "left", 0.2)
             tag_button = imagesearch("images/tag_duel_button.jpg")
         # Se clickeará el botóg "tag duel" hasta que ya no salga en pantalla
         while tag_button[0] != -1:
             if self.detener.is_set(
             ):  # Si se presiona el botón stop la busqueda se detiene
                 return
             click_image("images/tag_duel_button.jpg", tag_button, "left",
                         0.2)
             tag_button = imagesearch("images/tag_duel_button.jpg")
         # Hará los clicks correspondientes hasta que le botón de autoduel aparezca
         # en pantalla
         while imagesearch("images/auto_duel_button.jpg") == [
                 -1, -1
         ]:  # clickea hasta encontrar el botón auto-duel
             if self.detener.is_set():
                 return
             bonus_screen = imagesearch("images/tag_bonus40.jpg")
             dialogo = imagesearch("images/character_text.jpg")
             if bonus_screen[0] != -1:
                 click_image("images/tag_bonus40.jpg", bonus_screen, "left",
                             0.2)
             elif dialogo[0] != -1:
                 click_image("images/character_text.jpg", dialogo, "left",
                             0.2)
             elif imagesearch("images/choose_cup.jpg")[0] != -1:
                 print("ga")
                 break
         # clickeará el botón autoduel y luego buscará de forma constante
         # el botón "ok" que sale una vez finalizado el duelo y los
         # botones siguientes hasta quedar nuevamente en la pantalla
         # con el botón de "tag duel"
         if imagesearch("images/auto_duel_button.jpg")[0] != -1:
             click_image("images/auto_duel_button.jpg",
                         imagesearch("images/auto_duel_button.jpg"), "left",
                         0.2)  # clickea el botón autodue
             ok_button = imagesearch("images/pop_up_ok.jpg")
             while ok_button[0] == -1:
                 if self.detener.is_set(
                 ):  # Si se presiona el botón stop la busqueda se detiene
                     return
                 ok_button = imagesearch("images/pop_up_ok.jpg")
             while True:
                 if self.detener.is_set(
                 ):  # Si se presiona el botón stop la busqueda se detiene
                     return
                 ok_button = imagesearch("images/pop_up_ok.jpg")
                 dialogo = imagesearch("images/character_text.jpg",
                                       precision=0.9)
                 level_up_screen = imagesearch("images/level_up.jpg",
                                               precision=0.9)
                 if ok_button[0] != -1:
                     click_image("images/pop_up_ok.jpg", ok_button, "left",
                                 0.2)
                     sleep(1)
                 elif level_up_screen[0] != -1:
                     click_image("images/level_up.jpg", level_up_screen,
                                 "left", 0.2)
                     sleep(1)
                 elif dialogo[0] != -1:
                     while dialogo != [-1, -1]:
                         if self.detener.is_set(
                         ):  # Si se presiona el botón stop la busqueda se detiene
                             return
                         click_image("images/character_text.jpg", dialogo,
                                     "left", 0.2)
                         sleep(1)
                         dialogo = imagesearch("images/character_text.jpg")
                         tag_button = imagesearch(
                             "images/tag_duel_button.jpg")
                         if tag_button[0] != -1:
                             break
                     break
Exemple #13
0
    def check_world(self):
        # Busca el botón de cambiar mundos y verifica en que mundo está
        # (cambiando la variable a True) dependiendo de cuales mundos aparezcan
        # en las imágenes una vez presionado el botón
        coord = None
        contador = 0  # Usado para recorrer cada imagen
        world_check_button = list(
            map(imagesearch, ("images/check_world_button.jpg",
                              "images/check_world_button2.jpg",
                              "images/check_world_button3.jpg",
                              "images/check_world_button4.jpg",
                              "images/check_world_button5.jpg",
                              "images/check_world_button6.jpg",
                              "images/check_world_button7.jpg",
                              "images/check_world_button8.jpg",
                              "images/check_world_button9.jpg",
                              "images/check_world_button10.jpg",
                              "images/check_world_button11.jpg",
                              "images/check_world_button12.jpg",
                              "images/check_world_button13.jpg")))

        for cordx, cordy in world_check_button:
            if not -1 in {cordx, cordy}:
                x = cordx
                y = cordy
                coord = [x, y]
                break
            if contador == len(world_check_button) - 1:
                self.imprimir_texto(
                    "no se encontró el botón para verificar el mundo")
                self.imprimir_texto(
                    "se dará por hecho que se está en dm y por los npc buscados serán de este mundo"
                )
                self.gx_world = False
                self._5ds_world = False
                self.dm_world = True
                self.world_checked = True
                return
            contador += 1
        click_image("images/check_world_button.jpg", coord, "left", 0.1)
        if imagesearch("images/DSOD_world_check.jpg")[0] != -1:
            self.imprimir_texto("DSOD world desbloqueado")
        if imagesearch("images/gx_world_check.jpg")[0] != -1:
            self.imprimir_texto("Gx world desbloqueado")
        if imagesearch("images/5ds_world_check.jpg")[0] != -1:
            self.imprimir_texto("5ds world desbloqueado")
        if imagesearch_color("images/dm_world_selected.jpg",
                             precision=0.9)[0] != -1:
            self.gx_world = False
            self._5ds_world = False
            self.dm_world = True
            self.DSOD_world = False
            self.world_checked = True
            self.imprimir_texto("Se encuentra en dm world")
            return
        if imagesearch("images/dm_world_check.jpg")[0] == -1:
            click_image("images/check_world_button.jpg", coord, "left", 0.1)
        if imagesearch_color("images/DSOD_world_selected.jpg",
                             precision=0.9)[0] != -1:
            self.gx_world = False
            self._5ds_world = False
            self.dm_world = False
            self.DSOD_world = True
            self.world_checked = True
            self.imprimir_texto("Se encuentra en DOSD world")
            return
        if imagesearch("images/dm_world_check.jpg")[0] == -1:
            click_image("images/check_world_button.jpg", coord, "left", 0.1)
        if imagesearch_color("images/gx_world_selected.jpg",
                             precision=0.9)[0] != -1:
            self.gx_world = True
            self._5ds_world = False
            self.dm_world = False
            self.DSOD_world = False
            self.world_checked = True
            self.imprimir_texto("Se encuentra en Gx world")
            return
        if imagesearch("images/dm_world_check.jpg")[0] == -1:
            click_image("images/check_world_button.jpg", coord, "left", 0.1)
        if imagesearch_color("images/5ds_world_selected.jpg",
                             precision=0.9)[0] != -1:
            self.gx_world = False
            self._5ds_world = True
            self.dm_world = False
            self.DSOD_world = False
            self.world_checked = True
            self.imprimir_texto("Se encuentra en 5ds world")
            return