Войти

Показать полную графическую версию : Как правильно зациклить проверку


EnigmaNN
06-07-2019, 18:41
Приветствую.
Необходимо создать цикл проверки следующего характера:

1. Встаём на тестируемый пиксель
2. Если цвет пикселя соответствует значению, то действие тогда
3. Щелчок мышью по области экрана
4. Проверяем пиксель снова , начиная с п. 1.
5. Конец проверки


Но удалось написать только так


Mousemove(-143, 192, 0)
Sleep(2000)
if PixelGetColor(-143, 192) = 6698522 Then
Sleep(2000)
Mousemove(-196, 390, 0)
Sleep(5000)
MouseClick("left", -196, 390, 1, 10)
Else
MouseClick("left", 70, 688, 1, 10)
Sleep(5000)
EndIf


Скрипт работает, но не повторяет проверку
Не хватает знаний, чтобы достичь нужного. Буду благодарна за помощь

Iska
06-07-2019, 21:33
EnigmaNN, циклическая проверка нуждается в наличии цикла: Language Reference - Loops Statements (https://www.autoitscript.com/autoit3/docs/intro/lang_loops.htm). В Вашем случае подойдёт как Keyword While...WEnd (https://www.autoitscript.com/autoit3/docs/keywords/While.htm), так и Keyword Do...Until (https://www.autoitscript.com/autoit3/docs/keywords/Do.htm).

EnigmaNN
07-07-2019, 13:49
Спасибо за ответ
решение было найдено таким способом


for $i=1 to 200
Mousemove(-145, 198, 0)
Sleep(2000)
if PixelGetColor(-145, 198) = 14332707 Then
ExitLoop
Else
Mousemove(-196, 390, 0)
Sleep(5000)
MouseClick("left", -196, 390, 1, 10);
EndIf
Next



все ли верно в отношении синтаксиса?

Iska
07-07-2019, 16:54
EnigmaNN, если Вам надо проверить ровно 200 раз, то да. Если надо Вам проверять до наступления какого-либо условия (или бесконечно), то нет, пользуйте:
В Вашем случае подойдёт как Keyword While...WEnd, так и Keyword Do...Until. »
Проблема в другом. Описанная Вами постановка задачи не соответствует ни первому, ни второму приведённым кодам. В первом коде откуда-то взялась ветвь Else, отсутствующая в постановке задачи, во втором — выход из цикла.




© OSzone.net 2001-2012