Author Topic: Поиск картинки на скриншоте  (Read 1971 times)

0 Members and 3 Guests are viewing this topic.

goldferum

  • Зашел в гости
  • *
  • Posts: 2
    • View Profile
Поиск картинки на скриншоте
« on: June 09, 2016, 12:39:10 AM »
Здравствуйте. Помогите пожалуйста найти ошибку. Я новичек. Вот код
Code: [Select]
$link[0] = "link1.bmp"
$link[1] = "link2.bmp"
$link[2] = "link3.bmp"
$link[3] = "link4.bmp"
$link[4] = "link5.bmp"
wait(2)
$zagruz = 0
$l = RND(0,4)
print($link[$l])
while ($zagruz = 0)
   wait(2)
   WHEELDOWN(5)
   getscreen
   wait(1)
   IF_PICTURE_IN (0,0, 1250, 900, $link[$l])
    print($link[$l])
      HINTPOPUP("link find")
      LCLICK($_return1+RND(4,8), $_return2+RND(2,5))
      inc($zagruz)
   END_IF
END_CYC
он должен находить ссылку и кликать по координатам. Но при таком коде, скрипт один раз прокручивает страницу и намертво зависает. Ошибка скорее всего в организации цикла, но не пойму где именно. Подскажите пожалуйста!

Золотой

  • Оплот сообщества
  • ****
  • Posts: 312
    • View Profile
Re: Поиск картинки на скриншоте
« Reply #1 on: June 09, 2016, 08:31:37 AM »
Code: (clickermann) [Select]
$var1=5 // указать число прокруток страницы
$link[0] = "link1.bmp"
$link[1] = "link2.bmp"
$link[2] = "link3.bmp"
$link[3] = "link4.bmp"
$link[4] = "link5.bmp"
wait(2)
$zagruz = 0
while ($zagruz = 0)
   getscreen
   FOR($a=0,$a<5) // просмотр всех линков
      IF_PICTURE_IN (0,0, 1250, 900, $link[$a])
         print($link[$a])
         HINTPOPUP("link find")
         LCLICK($_return1+RND(4,8), $_return2+RND(2,5))
         INC($zagruz,1)
         INC($a,6)
      ELSE
         IF($var = $var1) // ограничение числа прокруток страницы
            INC($zagruz,1)
            INC($a,6)
            HINTPOPUP("link not find")
            print($link[$a])
         ELSE
            WHEELDOWN(5)
            wait(1)
            INC($var,1)
         END_IF   
      END_IF
   END_CYC
END_CYC
« Last Edit: June 09, 2016, 08:38:57 AM by Золотой »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Поиск картинки на скриншоте
« Reply #2 on: June 09, 2016, 11:10:12 AM »
Картинки должны быть маленькими 50x50 или меньше. Тут имеет значение количество пикселов в картинке, можно сделать широкую но по высоте в 2-3 пиксела. Правильная картинка находится почти мгновенно.
Можно обойтись без массивов.

В данном скрипте происходит случайный выбор одной из 5и картинок и поиск её с прокруткой до бесконечности пока не найдет.
Code: (clickermann) [Select]
$zagruz = 0
$num = RND(1,5)
print("Номер: ",$num, " - ",STRCONCAT("link",$num,".bmp"))
while ($zagruz = 0)
   GETSCREEN
   IF_PICTURE_IN (0,0, 1250, 900, STRCONCAT("link",$num,".bmp"))
      print(STRCONCAT("link",$num,".bmp"))
      HINTPOPUP("link find")
      LCLICK($_return1+RND(4,8), $_return2+RND(2,5))
      inc($zagruz)
      WAIT(1)
   ELSE
      WHEELDOWN(5)
      wait(2)
   END_IF
END_CYC

Можно искать не бесконечно
Code: (clickermann) [Select]
$num = RND(1,5)
print("Номер: ",$num, " - ",STRCONCAT("link",$num,".bmp"))
$time = $_time_t + 30 // таймер на 30 секунд
WHILE($time > $_time_t)
   GETSCREEN
   IF_PICTURE_IN (0,0, 1250, 900, STRCONCAT("link",$num,".bmp"))
      HINTPOPUP("link find")
      LCLICK($_return1+RND(4,8), $_return2+RND(2,5))
      $time = 0
      WAIT(1)
   ELSE
      WHEELDOWN(5)
      wait(2)
   END_IF
END_CYC
IF($time ! 0) // если за отведенное время картинка не найдена
   LOGWRITE ("Картинка ",STRCONCAT("link",$num,".bmp"), " не найдена!")
   KEYPRESS(#HOME) // возвращаемся к началу страницы
   WAIT(2)
END_IF