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

0 Members and 1 Guest are viewing this topic.

Kas

  • Зашел в гости
  • *
  • Posts: 14
    • View Profile
Поиск картинок
« on: February 25, 2018, 02:12:07 PM »
Всем привет. Такая вот проблема. Есть сценарий, в котором происходит поиск картинки, затем клик по ней, выполнение отпредленных действий, а затем возвращение к поиску картинки.

Проблема в том, что изображение появляется не в единственном экземпляре, и находятся картинки друг под другом, в виде списка. Кликер, возвращаясь к поиску картинок, кликает на самую верхнюю. Так вот, хотелось бы узнать, есть ли возможность сделать так, чтобы кликер не тыкал в картинку на одном и там же месте в течение 1 минуты? То есть сначала кликал на 1 картинку в списке, затем, возвращаясь к поиску после определенных действий, игнорировал картинку в том же месте и кликал на 2 по списку если прошло менее одной минуты?

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Поиск картинок
« Reply #1 on: February 25, 2018, 04:31:57 PM »
Чтобы найти все картинки на экране нужно использовать SCANPICTURE.

В данном примере в массив $ARR_SCAN будут записаны координаты всех найденных картинок, и далее в цикле по каждой из этих координат будет произведен клик. После клика, в том же цикле, можно написать и другие действия.
Code: (clickermann) [Select]
GETSCREEN
SCANPICTURE($ARR_SCAN, 0,0, $_xmax,$_ymax, "picture.bmp", -1, 100)

$ARR_NUM = 0
WHILE ($ARR_NUM < ARRSIZE($ARR_SCAN))
   $X = $ARR_SCAN [$ARR_NUM]
   INC($ARR_NUM,1)
   $Y = $ARR_SCAN [$ARR_NUM]
   INC($ARR_NUM,1)
   LCLICK($X, $Y)   // Клик
   WAITMS(100)
   // Далее действия после клика
   
END_CYC
UNDEFINE($ARR_SCAN)

Kas

  • Зашел в гости
  • *
  • Posts: 14
    • View Profile
Re: Поиск картинок
« Reply #2 on: February 25, 2018, 05:37:03 PM »
Проблема в том, что таблица, в которой находятся картинки, все время обновляется. То есть одни исчезают, другие появляются и иногда немного смещаются по горизонтали. Из-за этого по этому сценарию кликер частенько "промахивается" или тыкает туда, где уже нет картинки(
 Хотелось бы узнать, есть ли возможность сделать что-то вроде:

1)Поиск картинки и клик по ней
2)Выполнение определенного действия и возвращение к вкладке с картинками
3)Поиск картинки с игнорирование того места, где была найдена предыдущая, в течение 1 минут

Расписать все не прошу, наглеть не хочется, но за наводку, какими методами это реально воплотить, буду очень благодарен)

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Поиск картинок
« Reply #3 on: February 25, 2018, 07:23:30 PM »
Вроде так

Code: (clickermann) [Select]
$check = 0
WHILE($check = 0)
   GETSCREEN
   SCANPICTURE($ARR_SCAN, 0,0, $_xmax,$_ymax, "picture.bmp", -1, 100)
   FOR($i=0,$i<ARRSIZE($ARR_SCAN),2)
      $x = $ARR_SCAN[$i]
      $y = $ARR_SCAN[$i+1]
      IF(((($x < $sx-5)|($x > $sx+30)) & (($y < $sy-5)|($y > $sy+30))) | ($time < $_time_t))
         $sx = $x
         $sy = $y
         LCLICK($x, $y) // Клик
         WAITMS(100)
         $time = $_time_t + 60
         $check = 1
         $i=99999
      END_IF
   END_CYC
   UNDEFINE($ARR_SCAN)
   WAITMS(100)
END_CYC

Kas

  • Зашел в гости
  • *
  • Posts: 14
    • View Profile
Re: Поиск картинок
« Reply #4 on: February 25, 2018, 07:54:41 PM »
Просто кликает на первую, ждет минуту и снова кликает на нее, весь остальной список не видит :(

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Поиск картинок
« Reply #5 on: February 25, 2018, 09:45:01 PM »
Да действительно, в условии нужно не И а ИЛИ.

Исправь вот эту строку
Code: (clickermann) [Select]
IF(((($x < $sx-5)|($x > $sx+30)) | (($y < $sy-5)|($y > $sy+30))) | ($time < $_time_t))
Кстати значения -5 и +30 это охват области вокруг найденной точки для X и Y. Значения зависят от размера твоей картинки, установи их сам.

Kas

  • Зашел в гости
  • *
  • Posts: 14
    • View Profile
Re: Поиск картинок
« Reply #6 on: February 25, 2018, 09:46:01 PM »
Спасибо большое)