Форум сайта python.su
Всем доброго времени суток
Пытаюсь написать простенького бота для одной браузрной игры с помощью Sikuli. Там используется Jyton (Java Python). Делаю,вроде бы, все правильно, но получается не совсем то, что хочется.
Алгоритм бота в двух словах:
1]while на экране есть изображение1 (оно выделяется с помощью Sikuli ) делать
2] _ if есть изображение2 - кликнуть на него
3] _ else кликнуть на изображение3
4]else кликнуть на изображение4 - подождать - кликнуть на изображение5.
скрин из Sikuli:
Все работает, но с одной неточностью:
если я запускаю программу, и изображения 1 нет на экране - цикл while выполняется, а если в течение выполнения 2] и 3] изображение1 изчезает, то 4] не выполняется.
|
Помогите пожалуйста нубу)) Прошу меня извенить за такой, возможно, идиотский вопрос.
Отредактировано Student (Окт. 24, 2012 22:34:33)
Офлайн
.
Отредактировано JOHN_16 (Окт. 25, 2012 06:54:59)
Офлайн
JOHN_16
инструкция else не относится к циклу while, т.е. для цикла while вообще не предусмотрено такой конструкции как в этом коде
Офлайн
PooH какой кошмар=) Дожил до таких лет и не знал.
ALL виноват, был не прав
Офлайн
JOHN_16LoL Ну как бы в большенстве языков программирования есть конструкция “while…….. do….. , else……”
инструкция else не относится к циклу while, т.е. для цикла while вообще не предусмотрено такой конструкции как в этом коде
Отредактировано Student (Окт. 25, 2012 10:25:15)
Офлайн
StudentКак то я в вашем описании путаюсь. Судя по скриншоту:
PooH, а может быть вы мне поможете?
Офлайн
мне кажется, что проблема в функции exists. Посмотрите, какие она выдает значения при наличии/отсутствии изображения.
StudentСудя по этому, внутрь цикла поток управления попал, когда изображения 1 не было
изображения 1 нет на экране - цикл while выполняется, а если в течение выполнения 2] и 3] изображение1 изчезает, то 4] не выполняется.
Офлайн
StudentТак и должно быть, else после while выполняется только если тело while не выполнялось.
если я запускаю программу, и изображения 1 нет на экране - цикл while выполняется, а если в течение выполнения 2] и 3] изображение1 изчезает, то 4] не выполняется.
while True: while exists(pic1): if exists(pic2): click(pic2) else: click(pic3) click(pic4) sleep(10) click(pic5)
Офлайн
adrayДа в этоим то и проблема!
Судя по этому, внутрь цикла поток управления попал, когда изображения 1 не было
Офлайн
reclosedevПоставил ваш вариант - существенно ничего не изменилось. Возможно я коряво изъясняюсь, так что попробую обрисовать другими словами.
Я так понял нужно что-то такое:
Отредактировано Student (Окт. 25, 2012 13:38:43)
Офлайн