Author Topic: Завершение цикла при пропадании нужной картинки..  (Read 1637 times)

0 Members and 1 Guest are viewing this topic.

Langeman

  • Зашел в гости
  • *
  • Posts: 3
    • View Profile
Всем привет!
 В общем, непонимаю я , как это реализовать.. Нужно, чтобы цикл WHILE перестал работать при завершении определенного действия.
Например: есть картинка, я по ней тыкаю, пока она не пропадет, неизвестное количество раз, всегда по разному. Как это действие запихать в цикл? Объясните, пожалуйста..
Да в добавок инет или сервер глючит начинает временами, страница может долго прогружаться и задумал я еще и ожидание картинки туда прикрутить

Code: (clickermann) [Select]
FOR($c=1,$c<4) // повторяем 3 раза
   $time = $_time_t + 5
   WHILE($time > $_time_t)
      GETSCREEN(0,0,480,1050)
      IF_PICTURE_IN (0,0, 350,600, "Удар.bmp", -1, 100)
         $time=0
         LCLICK($_return1+20, $_return2)
         LOGWRITE ("Удар:" $c)
         WAITMS(300)
         
         FOR($d=1,$d<16) // повторяем 15 раз
            $time = $_time_t + 5
            WHILE($time > $_time_t)
               GETSCREEN(0,0,480,1050)
               IF_PICTURE_IN (0,0, 350,600, "Атаковать.bmp", -1, 100)
                  $time=0
                  LCLICK($_return1+30, $_return2)
                  LOGWRITE ("Атаковать:" $d)
                  WAITMS(300)
               END_IF
            END_IF
         END_CYC
      END_CYC
   END_CYC
END_CYC

Получилось, черт знает что :o
Прошу помощи)

Langeman

  • Зашел в гости
  • *
  • Posts: 3
    • View Profile
Так.. я тут под пивом белиберду написал.. Короче. Мне нужно убрать цикл FOR и заменить его циклом WHILE
Вот.. Там, в игре появляется картинка "Атаковать", после того, как тыкнешь в картинку "Удар".. НО НЕ ВСЕГДА! (и это тоже проблема (как не терять на этом время?))  Эта картинка "Атаковать" тыкается всегда разное количество раз, пока не пропадет. Вот тут то мне и нужно применить WHILE вместо FOR, но не могу понять как..

После того, как она пропадет, мне нужно снова тыкать картинку "Удар" ) Картинка Удар появляется строго 3 раза, не больше. Здесь можно FOR не убирать, кстати..

Ну и в завершение всего, как это все запихать в цикл ожидания картинки... Или наоборот, цикл ожидания картинки запихать в каждый из этих циклов..

О как.. Если вам не сложно, расскажите)

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Если с "Атаковать" неопределенность, то нужно искать сначала "Атаковать" а уж потом если не найдено "Удар"
Цикл FOR не нужен, можно просто продлевать время цикла каждый раз как только картинка найдена.
цикл сам завершится если за 5 секунд ни "Атаковать.bmp" ни "Удар.bmp" не будет найдено.

Code: (clickermann) [Select]
$time = $_time_t + 5
WHILE($time > $_time_t)
   GETSCREEN(0,0, 350,600)
   IF_PICTURE_IN (0,0, 350,600, "Атаковать.bmp", -1, 100)
      LCLICK($_return1+30, $_return2)
      LOGWRITE ("Атаковать")
      WAITMS(300)
      $time = $_time_t + 5 // Продлеваем время
   ELSE
      IF_PICTURE_IN (0,0, 350,600, "Удар.bmp", -1, 100)
         LCLICK($_return1+20, $_return2)
         LOGWRITE ("Удар")
         WAITMS(300)
         $time = $_time_t + 5 // Продлеваем время
      ELSE
         WAITMS(50)
      END_IF
   END_IF
END_CYC

Langeman

  • Зашел в гости
  • *
  • Posts: 3
    • View Profile
Oraven, большое вам спасибо)