Найти - Пользователи
Полная версия: Помогите, пожалуйста, найти ошибку!
Начало » Центр помощи » Помогите, пожалуйста, найти ошибку!
1 2
Student
Всем доброго времени суток
Пытаюсь написать простенького бота для одной браузрной игры с помощью 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] не выполняется.
|
Помогите пожалуйста нубу)) Прошу меня извенить за такой, возможно, идиотский вопрос.
JOHN_16
.
PooH
JOHN_16
инструкция else не относится к циклу while, т.е. для цикла while вообще не предусмотрено такой конструкции как в этом коде

садитесь, два
JOHN_16
PooH какой кошмар=) Дожил до таких лет и не знал.
ALL виноват, был не прав
Student
JOHN_16
инструкция else не относится к циклу while, т.е. для цикла while вообще не предусмотрено такой конструкции как в этом коде
LoL Ну как бы в большенстве языков программирования есть конструкция “while…….. do….. , else……”
PooH, а может быть вы мне поможете?
PooH
Student
PooH, а может быть вы мне поможете?
Как то я в вашем описании путаюсь. Судя по скриншоту:
  1. если изображение1 есть на экране -> должна выполняться ветка while, до тех пор пока оно не исчезнет, после этого выполнится ветка else
  2. если изображение1 отсутствует на экране -> выполнится ветка else

вы этого хотели?
adray
мне кажется, что проблема в функции exists. Посмотрите, какие она выдает значения при наличии/отсутствии изображения.
Student
изображения 1 нет на экране - цикл while выполняется, а если в течение выполнения 2] и 3] изображение1 изчезает, то 4] не выполняется.
Судя по этому, внутрь цикла поток управления попал, когда изображения 1 не было
reclosedev
Student
если я запускаю программу, и изображения 1 нет на экране - цикл while выполняется, а если в течение выполнения 2] и 3] изображение1 изчезает, то 4] не выполняется.
Так и должно быть, else после while выполняется только если тело while не выполнялось.

Я так понял нужно что-то такое:
while True:
    while exists(pic1):
        if exists(pic2):
            click(pic2)
        else:
            click(pic3)
    click(pic4)
    sleep(10)
    click(pic5)
насчет того, нужен ли бесконечный цикл while True - не уверен.

Student
adray
Судя по этому, внутрь цикла поток управления попал, когда изображения 1 не было
Да в этоим то и проблема!
Если при запуске программы while пропускает на доп условие:
2] _ if есть изображение2 - кликнуть на него
3] _ else кликнуть на изображение3)
То при изчизании изображения1 2-е else:
4]else кликнуть на изображение4 - подождать - кликнуть на изображение5.
не выполняется
Student
reclosedev
Я так понял нужно что-то такое:
Поставил ваш вариант - существенно ничего не изменилось. Возможно я коряво изъясняюсь, так что попробую обрисовать другими словами.
Что я хочу сделать:
  • изображение2-скрин ресурса, который должен собирать корабль
  • изображение3 -место на мини-карте, где может быть ресурс,если в поле видимости корабля он закончился
  • изображение1 - 100% прочность корабля, если его начинаюь бить, то картинка становится другой
  • изображение4 - место на мини карте, отлетев куда корабль будет ремонтироваться, после чего вернётся на изображение3
Проблема заключается в том, что если во время сбора ресурсов его начинают бить, а следовательно изображение1 пропадает, он не летит ремонтироваться, а так и собирает ресурсы.

This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB