Author Topic: Помогите зациклить  (Read 4014 times)

0 Members and 1 Guest are viewing this topic.

novhome

  • Освоившийся
  • **
  • Posts: 31
    • View Profile
Помогите зациклить
« on: February 10, 2016, 03:10:27 PM »
Здравствуйте!
Задача такая - есть картинка, на которую нужно нажать. После нажатия появляется такая же картинка, которую тоже нажимаем. И так несколько раз, количество которых заранее неизвестно.
Написал цикл поиска картинки (она может появляться с небольшими задержками) и эта часть хорошо работает один раз. Никак не могу сообразить как зациклить этот поиск и клик картинки до того момента, когда картинка перестанет появляться.
Code: [Select]
$check=0
WHILE($check=0)
GETSCREEN($x1_disp,$y1_disp,$x2_disp,$y2_disp)
COLORMODE(6)
IF_PICTURE_IN($x1_isp,$y1_isp,$x2_isp,$y2_isp,"\Picture\isp.bmp")
LCLICK($x_isp,$y_isp)
$check=1
ELSE
WAITMS(50)
END_IF
END_CYC

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Помогите зациклить
« Reply #1 on: February 10, 2016, 03:43:42 PM »
Code: (clickermann) [Select]
$time = $_ms + 3000
WHILE($time > $_ms)
   GETSCREEN($x1_disp,$y1_disp,$x2_disp,$y2_disp)
   COLORMODE(6)
   IF_PICTURE_IN($x1_isp,$y1_isp,$x2_isp,$y2_isp,"\Picture\isp.bmp")
      LCLICK($x_isp,$y_isp)
      WAITMS(100)
      $time = $_ms + 3000
   ELSE
      WAITMS(50)
   END_IF
END_CYC

Если картинка не появляется в течении 3 секунд (3000 мс) скрипт идёт дальше.


novhome

  • Освоившийся
  • **
  • Posts: 31
    • View Profile
Re: Помогите зациклить
« Reply #2 on: February 10, 2016, 05:05:43 PM »
Спасибо работает.
А чисто для развития - другая реализация возможна? Или только через время?

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Помогите зациклить
« Reply #3 on: February 10, 2016, 06:04:29 PM »
Какая другая? Можно после клика жёстко паузу задавать если ты её знаешь.

Вот в твоей задаче:
...После нажатия появляется такая же картинка, которую тоже нажимаем.
В ней не указано через сколько появляется такая же картинка. 95% она появляется не стабильно, т.е. зависит от загрузки.
Можешь после клика прописать жёсткую паузу WAITMS() если она тебе известна. Но если время не совпадёт скрипт либо будет лишние разы кликать (а кликает он быстро), либо пропустит картинку на появление которой тоже нужно время. Она же не возникает моментально.

При описании любой задачи всегда задавайся вопросами не только "если что-то будет" но и "если не будет".
Всегда ставь два стакана!
[spoiler]Программист ставит у кровати два стакана: полный и пустой.
Полный - если проснется и захочет пить.
А пустой... если проснётся, а пить не хочется.[/spoiler]


czech

  • Зашел в гости
  • *
  • Posts: 2
    • View Profile
Re: Помогите зациклить
« Reply #4 on: February 10, 2016, 06:33:54 PM »
доброго времени суток , помогите разобраться со скриптом , есть такое
$check = 0
WHILE($check = 0)
GETSCREEN  (1479,190, 1607,297)
IF_PIXEL_IN(1479,190, 1607,297, 58879) //жёлтый цвет
$check = 1
LCLICK($_return1, $_return2) // клик по найденному
WAITMS(100)
ELSE
WAITMS(50)
END_IF



можно ли  зациклить его на 40 минут , потом нужно добавить действие мышки и опять 40 минут цикла 

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Помогите зациклить
« Reply #5 on: February 10, 2016, 08:48:08 PM »
Code: (clickermann) [Select]
$t = $_time_t
WHILE($t > $_time_t-2400) //будет работать 2400 секунд
   GETSCREEN  (1479,190, 1607,297)
   IF_PIXEL_IN(1479,190, 1607,297, 58879) //жёлтый цвет
      LCLICK($_return1, $_return2) // клик по найденному
      WAITMS(100)
   ELSE
      WAITMS(50)
   END_IF
END_CYC

//тут действия мышки

czech

  • Зашел в гости
  • *
  • Posts: 2
    • View Profile
Re: Помогите зациклить
« Reply #6 on: February 10, 2016, 09:01:19 PM »
спасибо большое ) ;D