Автор Тема: Поиск картинок по очереди.  (Прочитано 1021 раз)

0 Пользователей и 1 Гость просматривают эту тему.

ma4ete

  • Освоившийся
  • **
  • Сообщений: 22
    • Просмотр профиля
Поиск картинок по очереди.
« : Декабрь 09, 2019, 06:44:36 pm »
Доброго вечера всем! Скажите пожалуйста, как сделать:ищем картинку. Если найдена, то выполняем несколько действий(нажатие мышкой на кнопки). Если искомая картинка не найдена, то спустя 5 секунд ищем другую картинку опять таки с выполнением нескольких действий(нажатие мышкой на кнопки). Если и вторая не найдена в течении 5 секунд, то ищем третью с таким же продолжением.
Пока что думал только в таком направлении, но не уверен что верно....
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

  • Герой форума
  • *****
  • Сообщений: 1027
    • Просмотр профиля
Re: Поиск картинок по очереди.
« Ответ #1 : Декабрь 09, 2019, 07:14:40 pm »
В редакторе в "шаблоны=>графика=>ожидание картинки с таймером" такой код:
Код: Clickermann
  1. $time = $_time_t + 10 // таймер на 10 секунд
  2. WHILE($time > $_time_t)
  3.   GETSCREEN
  4.   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "file.bmp", -1, 100)
  5.      $time = 0
  6.      LCLICK($_return1, $_return2)
  7.      WAITMS(100)
  8.   ELSE
  9.      WAITMS(500)
  10.   END_IF
  11. END_CYC
  12. IF($time ! 0)
  13. // время истекло, картинка не найдена
  14. END_IF
  15.  
  16.  

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

Код: Clickermann
  1. //первая картинка
  2. $time = $_time_t + 5 // таймер на 5 секунд
  3. WHILE($time > $_time_t)
  4.   GETSCREEN
  5.   COLORMODE(9)
  6.   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "1.bmp", -1, 90)
  7.      $time = 0
  8.  
  9.      //твои действия
  10.  
  11.      WAITMS(100)
  12.   ELSE
  13.      WAITMS(500)
  14.   END_IF
  15. END_CYC
  16.  
  17. //вторая картинка
  18. $time = $_time_t + 5 // таймер на 5 секунд
  19. WHILE($time > $_time_t)
  20.   GETSCREEN
  21.   COLORMODE(9)
  22.   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "2.bmp", -1, 90)
  23.      $time = 0
  24.  
  25.      //твои действия
  26.  
  27.      WAITMS(100)
  28.   ELSE
  29.      WAITMS(500)
  30.   END_IF
  31. END_CYC
  32.  
  33. //третья картинка
  34. $time = $_time_t + 5 // таймер на 5 секунд
  35. WHILE($time > $_time_t)
  36.   GETSCREEN
  37.   COLORMODE(9)
  38.   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "3.bmp", -1, 90)
  39.      $time = 0
  40.  
  41.      //твои действия
  42.  
  43.      WAITMS(100)
  44.   ELSE
  45.      WAITMS(500)
  46.   END_IF
  47. END_CYC

Далее, если действия при нахождении картинки одинаковы,  можно немного оптимизировать код, засунув каждый поиск в один цикл с параметром:
Код: Clickermann
  1. FOR($a=1,$a<4) // поочереди ищем три картинки
  2.  
  3.   $time = $_time_t + 5 // таймер на 5 секунд
  4.   WHILE($time > $_time_t)
  5.      GETSCREEN
  6.      COLORMODE(9)
  7.      IF_PICTURE_IN (0,0, $_xmax,$_ymax, strconcat($a, ".bmp"), -1, 90)
  8.         $time = 0
  9.  
  10.         //твои действия
  11.  
  12.         WAITMS(100)
  13.      ELSE
  14.         WAITMS(500)
  15.      END_IF
  16.   END_CYC
  17.  
  18. END_CYC



Vint

  • Супермодератор
  • Герой форума
  • *
  • Сообщений: 3497
  • Лечу куда хочу. cman 4.13.014x32, W10, W7
    • Просмотр профиля
Re: Поиск картинок по очереди.
« Ответ #2 : Декабрь 10, 2019, 11:18:02 am »

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

Код: Clickermann
  1. $a = 10
« Последнее редактирование: Декабрь 10, 2019, 11:20:15 am от Vint »


ma4ete

  • Освоившийся
  • **
  • Сообщений: 22
    • Просмотр профиля
Re: Поиск картинок по очереди.
« Ответ #3 : Декабрь 11, 2019, 09:19:26 pm »
Спасибо большое за помощь! А скажите еще пожалуйста , как можно выполнить такое.
Нужно чтобы при появлении нужной картинки прерывался цикл выполнения следующих действий:поиск первой картинки(выполнение действий), ожидание появления второй картинки(выполнение действий при появлении), после выполнения действий при появления второй картинки ожидаем появление третей. и если она появилась, то цикл завершается, а если не появилась, то цикл повторяется до тех пор, пока не появится эта картинка.
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
« Последнее редактирование: Декабрь 11, 2019, 09:22:05 pm от ma4ete »

ma4ete

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

Vint

  • Супермодератор
  • Герой форума
  • *
  • Сообщений: 3497
  • Лечу куда хочу. cman 4.13.014x32, W10, W7
    • Просмотр профиля
Re: Поиск картинок по очереди.
« Ответ #5 : Декабрь 19, 2019, 03:53:46 pm »
В последнем посту с кодом описание не соответствует коду. Где там Картинка 2 ?

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


ma4ete

  • Освоившийся
  • **
  • Сообщений: 22
    • Просмотр профиля
Re: Поиск картинок по очереди.
« Ответ #6 : Декабрь 21, 2019, 01:26:41 pm »
В последнем посту с кодом описание не соответствует коду. Где там Картинка 2 ?

...ожидаем появление третей. и если она появилась, то цикл завершается, а если не появилась, то цикл повторяется до тех пор, пока не появится эта картинка.
Оно так и есть. Единственное, потерялась последняя строка END_IF
Прошу прощения за ложные данные! У нас есть первая картинка(1), которую нужно найти. После ее нахождения мы выполняем действия и ожидаем появления следующей(2) картинки(это по времени может быть от 20 до 60-70 секунд). Но она может и не появиться. Как сделать так, чтобы кликер не ждал эти 60-70 секунд если картинка не появится и сразу же, если она не появилась запускал цикл заново столько раз пока она не появится и весь цикл закончится? Если что, то есть "контрольная" картинка, которая появляется в 100% случаев после выполнения действий с первой картинкой(т.е. она появляется всегда. и когда вторая картинка не появилась и когда появилась). Может как то привязаться к этой "контрольной" картинке и зацикливаться на ней?
Что то типа такого:
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

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

Vint

  • Супермодератор
  • Герой форума
  • *
  • Сообщений: 3497
  • Лечу куда хочу. cman 4.13.014x32, W10, W7
    • Просмотр профиля
Re: Поиск картинок по очереди.
« Ответ #8 : Декабрь 24, 2019, 06:33:23 pm »
Да нет, нормально всё. Запарка перед Новым Годом. По крайней мере у меня.

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

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

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


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


ma4ete

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