Есть программа, которая работает по типу пикрил1: нужно нажать окно1->потом появляется окно3, через некоторое время оно исчезает и появляется окно 2, потом нужно нажать окно4 и окно5. И по новой, начиная с окна1. Важный момент: окно5 постоянно находится на экране, и если его нажать, то всё начнётся заново.
Так вот, нужно написать скрипт для автоматизации. Пикрилейтед2 годится? И как это грамотно записать в виде циклов?
>>167410694 Проснулся? Ну ты и соня, тебя даже вчерашний шторм не разбудил. Говорят, мы уже приплыли в Морровинд. Нас выпустят, это точно! Тихо, стражник идет
1) Появляется окно1 (Start), нажимаю на него. 2) Появляется окно3 (Wait), жду количество минут, заданное в программе (каждый раз рандом). 3) Окно3 Wait исчезает, вместо него появляется окно2 (Next). Жму на него, снова появляется окно3 (Wait). Возвращаюсь к пункту 2). 4) После нескольких раз появляется жёлтое окно4 (Next). Жму на него. 5) Оно исчезает и остаётся только окно5 (Again). Нажимаю на него и возвращаюсь к пункту 1. Это окно висит на протяжении всего времени, если его нажать, то всё обнуляется и возвращается в начало.
>>167411573 while(true) { if (getWnd() == wnd1) { getWnd()->click(); // кликаем на wnd1 while (getWnd() != wnd2) { //ждём появления окна2 sleep(1s); } getWnd()->click(); // кликаем на wnd2 while (getWnd() != wnd4) { //ждём появления окна4 sleep(1s); } getWnd()->click(); // кликаем на wnd4 getWnd()->click(); // кликаем на wnd5 } } Но это без проверки существования окна5 и прочей обработки ошибок. Просто логика работы
>>167411858 Я его вообще нихуя не понял. Зачем ты начинаешь с проверки на существование второго окна? Лучше же начать с проверки существования первого. Если первого нет, дропаем цикл. Если есть - кликаем И так далее. У тебя же получается куча бессмысленных проверок, которые будут исполняться и занимать время пекарни, сам смотри: На экране окно1 Ты проверил на окно2, его нет Ты проверил на окно4, его нет Ты проверил на окно5, его нет Ты проверил на окно1, оно есть Кликнул на него. Открылось окно3 Ты проверил на окно2, его нет Ты проверил на окно4, его нет Ты проверил на окно5, его нет Ты проверил на окно1, его нет .... Ты проверил на окно2, оно есть
Зачем тебе столько лишних проверок, если можно: На экране окно1 Ты проверил на окно1, оно есть Кликнул на него. Появляется окно3 Ты проверил на окно2, его нет. Ждём ... Ты проверил на окно2, оно есть Кликнул на него.
Пиздец вы умные, а чем будите отрисовывать? Какой блядь язык? Так же скрипт для автоматизации? У тебя уже есть готовая программа с граф. интерфейсом? Если есть, сложно использовать callback'и?
>>167412502 if (getWnd() == wnd1) { И другие условия такого плана выполняются только на определённых окнах и до клика на окно5 мы не дойдём не кликнув на предыдущие.
А когда висит окно3 программа ждёт и вообще никуда не кликает, см while (getWnd() != wnd2) { //ждём появления окна2 sleep(1s); } while (getWnd() != wnd4) { //ждём появления окна4 sleep(1s); }
Да, уточнение, код работает если у тебя есть функция getWnd(), которая возвращает название окна или его отличительный признак (Start, wait, next)
>>167412690 >Да, уточнение, код работает если у тебя есть функция getWnd(), которая возвращает название окна или его отличительный признак (Start, wait, next) У меня он делает скриншот и сверяет с нужным окном.
Чёт я вообще запутался, можешь написать полностью код?
>>167412836 >У меня он делает скриншот и сверяет с нужным окном. Тогда всё ок. >>167411797 верный вариант. Полностью не могу, скоро ухожу. Но если что-то не понятно, то задай вопрос, у меня есть ещё минут 5-7
>>167410257 (OP) Window[] windows = new Window[]{wnd2,wnd4,wnd5,wnd1} for(int i = 0; i < windows.Length; i++) { if(windows.Visible) { windows.Click(); break; } }
Если тебе постоянно опрашивать надо, то сделай лучше наблюдателя. Зато изучишь один паттерн. Если для лабы и в рот ебал. Додумаешься сам переписать на while.
1) Появляется окно1 (Start), нажимаю на него. 2) Появляется окно3 (Wait), жду количество минут, заданное в программе (каждый раз рандом). 3) Окно3 Wait исчезает, вместо него появляется окно2 (Next). Жму на него, снова появляется окно3 (Wait). Возвращаюсь к пункту 2). 4) После нескольких раз появляется жёлтое окно4 (Next). Жму на окно5 (Again) и возвращаюсь к пункту 1. Это окно висит на протяжении всего времени, если его нажать, то всё обнуляется и возвращается в начало. Его нужно нажимать только в конце цикла.
Пикрил проверяет есть ли окно2 и нажимает на него. Остальное допилить не получается, выручайте
Есть программа, которая работает по типу пикрил1:
нужно нажать окно1->потом появляется окно3, через некоторое время оно исчезает и появляется окно 2, потом нужно нажать окно4 и окно5. И по новой, начиная с окна1.
Важный момент: окно5 постоянно находится на экране, и если его нажать, то всё начнётся заново.
Так вот, нужно написать скрипт для автоматизации. Пикрилейтед2 годится? И как это грамотно записать в виде циклов?