Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 24, 2012 22:33:05

Student
Зарегистрирован: 2012-10-24
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите, пожалуйста, найти ошибку!

Всем доброго времени суток
Пытаюсь написать простенького бота для одной браузрной игры с помощью 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] не выполняется.
|
Помогите пожалуйста нубу)) Прошу меня извенить за такой, возможно, идиотский вопрос.




Don't become angry, I only study :D

Отредактировано Student (Окт. 24, 2012 22:34:33)

Офлайн

#2 Окт. 25, 2012 00:54:42

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Помогите, пожалуйста, найти ошибку!

.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Отредактировано JOHN_16 (Окт. 25, 2012 06:54:59)

Офлайн

#3 Окт. 25, 2012 06:37:27

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Помогите, пожалуйста, найти ошибку!

JOHN_16
инструкция else не относится к циклу while, т.е. для цикла while вообще не предусмотрено такой конструкции как в этом коде

садитесь, два



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#4 Окт. 25, 2012 06:56:37

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Помогите, пожалуйста, найти ошибку!

PooH какой кошмар=) Дожил до таких лет и не знал.
ALL виноват, был не прав



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#5 Окт. 25, 2012 10:24:24

Student
Зарегистрирован: 2012-10-24
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите, пожалуйста, найти ошибку!

JOHN_16
инструкция else не относится к циклу while, т.е. для цикла while вообще не предусмотрено такой конструкции как в этом коде
LoL Ну как бы в большенстве языков программирования есть конструкция “while…….. do….. , else……”
PooH, а может быть вы мне поможете?




Don't become angry, I only study :D

Отредактировано Student (Окт. 25, 2012 10:25:15)

Офлайн

#6 Окт. 25, 2012 11:34:36

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Помогите, пожалуйста, найти ошибку!

Student
PooH, а может быть вы мне поможете?
Как то я в вашем описании путаюсь. Судя по скриншоту:
  1. если изображение1 есть на экране -> должна выполняться ветка while, до тех пор пока оно не исчезнет, после этого выполнится ветка else
  2. если изображение1 отсутствует на экране -> выполнится ветка else

вы этого хотели?



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#7 Окт. 25, 2012 11:37:44

adray
Зарегистрирован: 2012-09-15
Сообщения: 123
Репутация: +  18  -
Профиль   Отправить e-mail  

Помогите, пожалуйста, найти ошибку!

мне кажется, что проблема в функции exists. Посмотрите, какие она выдает значения при наличии/отсутствии изображения.

Student
изображения 1 нет на экране - цикл while выполняется, а если в течение выполнения 2] и 3] изображение1 изчезает, то 4] не выполняется.
Судя по этому, внутрь цикла поток управления попал, когда изображения 1 не было

Офлайн

#8 Окт. 25, 2012 12:57:10

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

Помогите, пожалуйста, найти ошибку!

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 - не уверен.

Офлайн

#9 Окт. 25, 2012 13:01:19

Student
Зарегистрирован: 2012-10-24
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите, пожалуйста, найти ошибку!

adray
Судя по этому, внутрь цикла поток управления попал, когда изображения 1 не было
Да в этоим то и проблема!
Если при запуске программы while пропускает на доп условие:
2] _ if есть изображение2 - кликнуть на него
3] _ else кликнуть на изображение3)
То при изчизании изображения1 2-е else:
4]else кликнуть на изображение4 - подождать - кликнуть на изображение5.
не выполняется




Don't become angry, I only study :D

Офлайн

#10 Окт. 25, 2012 13:37:50

Student
Зарегистрирован: 2012-10-24
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите, пожалуйста, найти ошибку!

reclosedev
Я так понял нужно что-то такое:
Поставил ваш вариант - существенно ничего не изменилось. Возможно я коряво изъясняюсь, так что попробую обрисовать другими словами.
Что я хочу сделать:
  • изображение2-скрин ресурса, который должен собирать корабль
  • изображение3 -место на мини-карте, где может быть ресурс,если в поле видимости корабля он закончился
  • изображение1 - 100% прочность корабля, если его начинаюь бить, то картинка становится другой
  • изображение4 - место на мини карте, отлетев куда корабль будет ремонтироваться, после чего вернётся на изображение3
Проблема заключается в том, что если во время сбора ресурсов его начинают бить, а следовательно изображение1 пропадает, он не летит ремонтироваться, а так и собирает ресурсы.




Don't become angry, I only study :D

Отредактировано Student (Окт. 25, 2012 13:38:43)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version