Author Topic: Поиск картинок по очереди.  (Read 2585 times)

0 Members and 1 Guest are viewing this topic.

ma4ete

  • Освоившийся
  • **
  • Posts: 33
    • View Profile
Поиск картинок по очереди.
« on: December 09, 2019, 06:44:36 PM »
Доброго вечера всем! Скажите пожалуйста, как сделать:ищем картинку. Если найдена, то выполняем несколько действий(нажатие мышкой на кнопки). Если искомая картинка не найдена, то спустя 5 секунд ищем другую картинку опять таки с выполнением нескольких действий(нажатие мышкой на кнопки). Если и вторая не найдена в течении 5 секунд, то ищем третью с таким же продолжением.
Пока что думал только в таком направлении, но не уверен что верно....
Code: [Select]
GETSCREEN
COLORMODE(9)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "1.bmp", -1, 90)
   LCLICK($_return1 + 2, $_return2 + 10)
   WAITMS(500)
   LCLICK($_return1 + 520, $_return2 + 159)
WAITMS(500)
LCLICK($_return1 - 235, $_return2 + 267)
WAITMS(500)
LCLICK($_return1 - 235, $_return2 + 237)
WAITMS(1000)
KEYPRESS(#ESC)
END_IF
ELSE
GETSCREEN
COLORMODE(9)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "2.bmp", -1, 90)
   LCLICK($_return1 + 2, $_return2 + 10)
WAITMS(500)
   LCLICK($_return1 + 520, $_return2 + 159)
WAITMS(500)
LCLICK($_return1 - 235, $_return2 + 267)
WAITMS(500)
LCLICK($_return1 - 235, $_return2 + 237)
WAITMS(1000)
KEYPRESS(#ESC)
       END_IF
HALT

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Поиск картинок по очереди.
« Reply #1 on: December 09, 2019, 07:14:40 PM »
В редакторе в "шаблоны=>графика=>ожидание картинки с таймером" такой код:
Code: (clickermann) [Select]
$time = $_time_t + 10 // таймер на 10 секунд
WHILE($time > $_time_t)
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "file.bmp", -1, 100)
      $time = 0
      LCLICK($_return1, $_return2)
      WAITMS(100)
   ELSE
      WAITMS(500)
   END_IF
END_CYC
IF($time ! 0)
// время истекло, картинка не найдена
END_IF


Вот из этого шаблона собираем то что тебе нужно:

Code: (clickermann) [Select]
//первая картинка
$time = $_time_t + 5 // таймер на 5 секунд
WHILE($time > $_time_t)
   GETSCREEN
   COLORMODE(9)
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "1.bmp", -1, 90)
      $time = 0
     
      //твои действия
     
      WAITMS(100)
   ELSE
      WAITMS(500)
   END_IF
END_CYC

//вторая картинка
$time = $_time_t + 5 // таймер на 5 секунд
WHILE($time > $_time_t)
   GETSCREEN
   COLORMODE(9)
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "2.bmp", -1, 90)
      $time = 0
     
      //твои действия
     
      WAITMS(100)
   ELSE
      WAITMS(500)
   END_IF
END_CYC

//третья картинка
$time = $_time_t + 5 // таймер на 5 секунд
WHILE($time > $_time_t)
   GETSCREEN
   COLORMODE(9)
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "3.bmp", -1, 90)
      $time = 0
     
      //твои действия
     
      WAITMS(100)
   ELSE
      WAITMS(500)
   END_IF
END_CYC

Далее, если действия при нахождении картинки одинаковы,  можно немного оптимизировать код, засунув каждый поиск в один цикл с параметром:
Code: (clickermann) [Select]
FOR($a=1,$a<4) // поочереди ищем три картинки
   
   $time = $_time_t + 5 // таймер на 5 секунд
   WHILE($time > $_time_t)
      GETSCREEN
      COLORMODE(9)
      IF_PICTURE_IN (0,0, $_xmax,$_ymax, strconcat($a, ".bmp"), -1, 90)
         $time = 0
         
         //твои действия
         
         WAITMS(100)
      ELSE
         WAITMS(500)
      END_IF
   END_CYC
   
END_CYC



Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Поиск картинок по очереди.
« Reply #2 on: December 10, 2019, 11:18:02 AM »

Если искомая картинка не найдена, то спустя 5 секунд ищем другую картинку...
Если и вторая не найдена в течении 5 секунд, то ищем третью...

Code: (clickermann) [Select]
$a = 10
« Last Edit: December 10, 2019, 11:20:15 AM by Vint »


ma4ete

  • Освоившийся
  • **
  • Posts: 33
    • View Profile
Re: Поиск картинок по очереди.
« Reply #3 on: December 11, 2019, 09:19:26 PM »
Спасибо большое за помощь! А скажите еще пожалуйста , как можно выполнить такое.
Нужно чтобы при появлении нужной картинки прерывался цикл выполнения следующих действий:поиск первой картинки(выполнение действий), ожидание появления второй картинки(выполнение действий при появлении), после выполнения действий при появления второй картинки ожидаем появление третей. и если она появилась, то цикл завершается, а если не появилась, то цикл повторяется до тех пор, пока не появится эта картинка.
Code: [Select]
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "1.bmp", -1, 90) // поиск первой картинки
//выполнение действий

$check = 0  // ожидание появления следующей картинки с последующим выполнением действий
WHILE($check = 0)
   GETSCREEN
   COLORMODE(6)
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "3.bmp", -1, 90)
      LCLICK($_return1, $_return2)
      $check = 1
   END_IF
    END_CYC
   
// после предыдущей картинки и выполнения действий если найдена картинка3, то завершаем цикл. если не найдена то повторяем все заново до появления картинки3
« Last Edit: December 11, 2019, 09:22:05 PM by ma4ete »

ma4ete

  • Освоившийся
  • **
  • Posts: 33
    • View Profile
Re: Поиск картинок по очереди.
« Reply #4 on: December 19, 2019, 11:41:18 AM »
Прошу прощения, что такое пишу. Но почему никто не может помочь?? Может я неверно поставил вопрос? Или может быть я слишком многого прошу? Или может быть последний мой вопрос должен быть выложен в отдельной теме? Что за игнор пользовательских вопрос в последнее время?? Еще раз прошу прощения за оффтоп, но очень интересно в чем кроется причина столь долгого отсутствия хоть какого то ответа.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Поиск картинок по очереди.
« Reply #5 on: December 19, 2019, 03:53:46 PM »
В последнем посту с кодом описание не соответствует коду. Где там Картинка 2 ?

...ожидаем появление третей. и если она появилась, то цикл завершается, а если не появилась, то цикл повторяется до тех пор, пока не появится эта картинка.
Оно так и есть. Единственное, потерялась последняя строка END_IF


ma4ete

  • Освоившийся
  • **
  • Posts: 33
    • View Profile
Re: Поиск картинок по очереди.
« Reply #6 on: December 21, 2019, 01:26:41 PM »
В последнем посту с кодом описание не соответствует коду. Где там Картинка 2 ?

...ожидаем появление третей. и если она появилась, то цикл завершается, а если не появилась, то цикл повторяется до тех пор, пока не появится эта картинка.
Оно так и есть. Единственное, потерялась последняя строка END_IF
Прошу прощения за ложные данные! У нас есть первая картинка(1), которую нужно найти. После ее нахождения мы выполняем действия и ожидаем появления следующей(2) картинки(это по времени может быть от 20 до 60-70 секунд). Но она может и не появиться. Как сделать так, чтобы кликер не ждал эти 60-70 секунд если картинка не появится и сразу же, если она не появилась запускал цикл заново столько раз пока она не появится и весь цикл закончится? Если что, то есть "контрольная" картинка, которая появляется в 100% случаев после выполнения действий с первой картинкой(т.е. она появляется всегда. и когда вторая картинка не появилась и когда появилась). Может как то привязаться к этой "контрольной" картинке и зацикливаться на ней?
Что то типа такого:
Code: [Select]
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "1.bmp", -1, 90) // поиск первой картинки
 LCLICK($_return1 + 5, $_return2 + 115)
   WAITMS(1500)
   LCLICK($_return1, $_return2 + 140)
   WAITMS(500)
   LCLICK($_return1 + 265, $_return2 + 329)
   WAITMS(500)
END_IF

$check = 0  // ожидание появления следующей картинки с последующим выполнением действий(если картинка найдена, то мы завершем цикл нажатием клавиши ESC т.е. картинка нашлась нажали клавишу ESC и завершили цикл.Если же не появилась то цикл повторяется пока не появится
WHILE($check = 0)
   GETSCREEN
   COLORMODE(6)
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "2.bmp", -1, 90)
ELSE
GETSCREEN
   COLORMODE(6)
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "контрольная.bmp", -1, 90)   
      $check = 1
KEYPRESS(#ESC)     
   END_IF
    END_CYC
   

ma4ete

  • Освоившийся
  • **
  • Posts: 33
    • View Profile
Re: Поиск картинок по очереди.
« Reply #7 on: December 24, 2019, 04:05:56 PM »
Всем доброго дня! Опять я видимо что то нарушил или еще что...Товарищи-господа! Объясните пожалуйста, что нужно делать(и нужно ли вообще) чтобы получить помощь на данном форуме не прибегая к заискиванию или выпрашиванию? Просмотрел предыдущие темы-результат порадовал: вопрос-ответ в течении дня.  Опять таки, я все прекрасно понимаю. Никто никому здесь не должен. Все отвечают в меру своей занятости и владения информацией. Но почему уже несколько дней нет ответа? На мой взгляд форум отнюдь не "мертвый" и форумчане всегда готовы прийти на помощь. Может я что то нарушил(повторяюсь)? Или условия задачи неясны и вам просто "влом" разбираться и выяснять что же мне такого "важного" нужно? Прошу помощи у вас т.к. сам я не смогу додуматься до этого. И снова прошу простить

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Поиск картинок по очереди.
« Reply #8 on: December 24, 2019, 06:33:23 PM »
Да нет, нормально всё. Запарка перед Новым Годом. По крайней мере у меня.

И да, условия непонятны, по крайней мере не позволили дать ответ сразу при появлении, а потом пост забылся.
Просьба переформулировать максимально простыми словами.

Некоторые места вызвавшие затруднения:
Quote
не ждал эти 60-70 секунд если картинка не появится и сразу же...
а сколько ждал? В любом случае перед поиском нужна задержка, чтоб картинка успела появиться. Если делать "сразу" её ещё не будет.

Quote
...и сразу же, если она не появилась запускал цикл заново столько раз пока она не появится
Какой цикл? В коде только один цикл это ожидание картинки 2. Может имеется ввиду, ВСЁ заново? И поиск картинки 1 и поиск 2 ???


Не понятно что вообще за картинка 2. Если она может появиться от 20 до 70 секунд, то и ждать её нужно не более 70 секунд. Какой смысл переходить дальше.


ma4ete

  • Освоившийся
  • **
  • Posts: 33
    • View Profile
Re: Поиск картинок по очереди.
« Reply #9 on: December 27, 2019, 01:51:17 PM »
Да нет, нормально всё. Запарка перед Новым Годом. По крайней мере у меня.
Спасибо за разъяснение!)) Прошу прощения что так путано все объяснял. Моя задача оказалась намного проще и все удалось сделать за 10 минут.