Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Цикл While, пропуск действия
yohohox
сообщение 6.11.2019, 13:09
Сообщение #1


*

Registred
Сообщений: 7
Регистрация: 10.7.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.534



Добрый день товарищи.
Подскажите пожалуйста в чем может быть проблема.
Нужно чтобы цикл проходил 3 раза, проверял нужный цвет и нажималась клавиша.
А тут в лог выводит "Цвет не найден" 3 раза, а клик на клавишу не происходит.
Код
local count = 0
    while true do

        count = count + 1

        if color (964, 378, handle) == 65535 then
            log ("Цвет найден")
        else
            log ("Цвет не найден")
            send217 ("Down")
        end

        if count == 3 then
           break
        end

    end
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
yohohox
сообщение 7.11.2019, 14:12
Сообщение #2


*

Registred
Сообщений: 7
Регистрация: 10.7.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.534



пробовал и через repeat и for тоже не то, что не так?
всего лишь нужно что бы условие повторилось несколько раз после чего цикл прекратил работу.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 7.11.2019, 14:25
Сообщение #3


*****

Journeyman
Сообщений: 399
Регистрация: 18.11.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.689



Цитата(yohohox @ 7.11.2019, 18:12) *

пробовал и через repeat и for тоже не то, что не так?
всего лишь нужно что бы условие повторилось несколько раз после чего цикл прекратил работу.

паузу хотя бы 0 поставить, и некоторые send217 не воспринимают, нужно или sendex писать или Send()
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
yohohox
сообщение 7.11.2019, 14:34
Сообщение #4


*

Registred
Сообщений: 7
Регистрация: 10.7.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.534



Цитата(Levo222 @ 7.11.2019, 14:25) *

паузу хотя бы 0 поставить, и некоторые send217 не воспринимают, нужно или sendex писать или Send()

Дело в том что все работает прекрасно, только вот не выходит у меня ограничить кол-во повторов цикла.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 7.11.2019, 14:38
Сообщение #5


*****

Journeyman
Сообщений: 399
Регистрация: 18.11.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.689



Цитата(yohohox @ 7.11.2019, 18:34) *

Дело в том что все работает прекрасно, только вот не выходит у меня ограничить кол-во повторов цикла.

А чему равно true?

Код

if count == 3 then
           return false
        end

или почему не сделать while count < 3 do?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
yohohox
сообщение 7.11.2019, 14:58
Сообщение #6


*

Registred
Сообщений: 7
Регистрация: 10.7.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.534



Цитата(Levo222 @ 7.11.2019, 14:38) *

А чему равно true?

или почему не сделать while count < 3 do?

true ни чему не равна, это чтоб бесконечный цикл был.
если делаю while count < 3 do. тогда нет проверки по цвету и кликов, только в лог 3 раза сообщения выводится "Click"
Видимо задачу нужно подробнее описать.

Прикрепленное изображение
Есть такой прямоугольник, серая полоска перемещается туда = обратно по оси х.
нужно отслеживать когда серая полоса перекрывает желтую и делать клик. и так повторять N-ое кол-во раз.

что собственно безуспешно пытаюсь сделать. вроде бы задача должна быть не трудная)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 7.11.2019, 15:11
Сообщение #7


*****

Journeyman
Сообщений: 399
Регистрация: 18.11.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.689



Цитата(yohohox @ 7.11.2019, 18:58) *

нужно отслеживать когда серая полоса перекрывает желтую и делать клик

дак клик или "send217 ("Down")"?

Цитата(yohohox @ 7.11.2019, 18:58) *

и так повторять N-ое кол-во раз.

тогда не while а for

тогда нужно отслеживать не желтую полосу а серую и ставить счетчик внутрь найденного
Код
 if color (964, 378, handle) == "серый цвет" then -- серый цвет на месте желтой полосы или неравенство желтого ~= "желтый цвет"
            log ("Цвет найден")
        kleft (964, 378) -- мышью, или
        send217(клавиша)
        count = count + 1
        else
            log ("Цвет не найден")
        end
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
yohohox
сообщение 7.11.2019, 15:47
Сообщение #8


*

Registred
Сообщений: 7
Регистрация: 10.7.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.534



Цитата(Levo222 @ 7.11.2019, 15:11) *
тогда нужно отслеживать не желтую полосу а серую и ставить счетчик внутрь найденного

Действительно, Вы правы. Спасибо Вам большое!
Теперь работает как надо
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 28.3.2024, 12:59
Designed by Nickostyle