Author Topic: цикл  (Read 3021 times)

0 Members and 1 Guest are viewing this topic.

Viktor77

  • Активный участник
  • ***
  • Posts: 106
    • View Profile
цикл
« on: April 27, 2021, 04:46:03 PM »
подскажите как можно в таком цикле добавить еще условие, если условие не выполняется в течении 10 минут, выйти и выполнять дальше скрипт.
Code: (clickermann) [Select]
$check = 0
WHILE($check = 0)
   GETSCREEN
   COLORMODE(8)
   IF_PICTURE_IN (0,0,$_xmax,$_ymax, "1.bmp", -1, 100)
      LCLICK($_return1, $_return2)
      wait(1000)
      GETSCREEN
      COLORMODE(8)
      IF_PICTURE_IN (0,0,$_xmax,$_ymax, "2.bmp", -1, 100)
         $check=1
         MOVE($_return1, $_return2)
         WAITMS(3000)
         GETSCREEN
         COLORMODE(8)
         IF_PICTURE_IN (0,0,$_xmax,$_ymax, "3.bmp", -1, 100)
            LCLICK($_return1, $_return2)
            wait(1000)
         END_IF
      else
         GETSCREEN
         COLORMODE(8)
         IF_PICTURE_IN (0,0,$_xmax,$_ymax, "4.bmp", -1, 100)
            LCLICK($_return1, $_return2)
            wait(1000)
         END_IF
      END_IF
   END_IF
END_CYC
HALT

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: цикл
« Reply #1 on: April 27, 2021, 11:01:44 PM »
Какое условие не выполняется?


Viktor77

  • Активный участник
  • ***
  • Posts: 106
    • View Profile
Re: цикл
« Reply #2 on: May 01, 2021, 11:50:11 PM »
Какое условие не выполняется?
чтобы выходил из цикла через 10 минут, и продолжал дальше скрипт

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: цикл
« Reply #3 on: May 04, 2021, 08:12:43 AM »
чтобы выходил из цикла через 10 минут, и продолжал дальше скрипт
Это другой, нормальный вопрос, а то условия непонятные.
Code: (clickermann) [Select]
$time = $_time_t + 600
WHILE($time > $_time_t)
    GETSCREEN
    COLORMODE(8)
    IF_PICTURE_IN(0,0,$_xmax,$_ymax, "1.bmp")
        LCLICK($_return1, $_return2)
        wait(1000)
        GETSCREEN
        COLORMODE(8)
        IF_PICTURE_IN(0,0,$_xmax,$_ymax, "2.bmp")
            $time = 0
            MOVE($_return1, $_return2)
            WAITMS(3000)
            GETSCREEN
            COLORMODE(8)
            IF_PICTURE_IN(0,0,$_xmax,$_ymax, "3.bmp")
                LCLICK($_return1, $_return2)
                wait(1000)
            END_IF
        else
            GETSCREEN
            COLORMODE(8)
            IF_PICTURE_IN(0,0,$_xmax,$_ymax, "4.bmp")
                LCLICK($_return1, $_return2)
                wait(1000)
            END_IF
        END_IF
    END_IF
END_CYC


Viktor77

  • Активный участник
  • ***
  • Posts: 106
    • View Profile
Re: цикл
« Reply #4 on: May 04, 2021, 11:53:16 PM »
Какое условие не выполняется?
Добрый вечер. а вот подскажите как реализовать такое: есть 5 таймеров со своими скриптами, и как можно сделать чтоб независимо от запуска, шла проверка времени. т.е. запустил скрипт 15,00 и стартовало с 15,10 т.е. с 3 таймера

Code: (clickermann) [Select]
$time_check = 0
WHILE($time_check = 0) // Цикл сдерживает выполнение до указанного времени
   IF(($_time_h = 10)&($_time_m = 10))
      $time_check = 1
      // скрипт 1
     
   END_IF
END_CYC

$time_check = 0
WHILE($time_check = 0) // Цикл сдерживает выполнение до указанного времени
   IF(($_time_h = 12)&($_time_m = 10))
      $time_check = 1
      // скрипт 2
     
   END_IF
END_CYC

$time_check = 0
WHILE($time_check = 0) // Цикл сдерживает выполнение до указанного времени
   IF(($_time_h = 15)&($_time_m = 10))
      $time_check = 1
      // скрипт 3
     
   END_IF
END_CYC

$time_check = 0
WHILE($time_check = 0) // Цикл сдерживает выполнение до указанного времени
   IF(($_time_h = 17)&($_time_m = 10))
      $time_check = 1
      // скрипт 4
     
   END_IF
END_CYC

$time_check = 0
WHILE($time_check = 0) // Цикл сдерживает выполнение до указанного времени
   IF(($_time_h = 19)&($_time_m = 10))
      $time_check = 1
      // скрипт  5
     
   END_IF
END_CYC
HALT

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: цикл
« Reply #5 on: May 05, 2021, 12:47:37 PM »
Добрый вечер. а вот подскажите как реализовать такое: есть 5 таймеров со своими скриптами, и как можно сделать чтоб независимо от запуска, шла проверка времени. т.е. запустил скрипт 15,00 и стартовало с 15,10 т.е. с 3 таймера

Code: (clickermann) [Select]
$time_check = 0
WHILE($time_check = 0) // Цикл сдерживает выполнение до указанного времени
   IF(($_time_h = 10)&($_time_m = 10))
      $time_check = 1
      // скрипт 1
   END_IF
END_CYC

$time_check = 0
WHILE($time_check = 0) // Цикл сдерживает выполнение до указанного времени
   IF(($_time_h = 12)&($_time_m = 10))
      $time_check = 1
      // скрипт 2
     
   END_IF
END_CYC

$time_check = 0
WHILE($time_check = 0) // Цикл сдерживает выполнение до указанного времени
   IF(($_time_h = 15)&($_time_m = 10))
      $time_check = 1
      // скрипт 3
     
   END_IF
END_CYC

$time_check = 0
WHILE($time_check = 0) // Цикл сдерживает выполнение до указанного времени
   IF(($_time_h = 17)&($_time_m = 10))
      $time_check = 1
      // скрипт 4
     
   END_IF
END_CYC

$time_check = 0
WHILE($time_check = 0) // Цикл сдерживает выполнение до указанного времени
   IF(($_time_h = 19)&($_time_m = 10))
      $time_check = 1
      // скрипт  5
     
   END_IF
END_CYC
HALT

Чтобы такое сделать нужно всего лишь каждое утро выпивать одну ложку...  не писать лишнего.
Вот зачем здесь циклы? Они ведь даже подписаны -  "сдерживает". Понятно, что если не нужно сдерживать, то и циклы не нужны.

Code: (clickermann) [Select]
IF(($_time_h = 10)&($_time_m = 10))
    // скрипт 1   
END_IF

IF(($_time_h = 12)&($_time_m = 10))
    // скрипт 2   
END_IF

IF(($_time_h = 15)&($_time_m = 10))
    // скрипт 3   
END_IF

IF(($_time_h = 17)&($_time_m = 10))
    // скрипт 4   
END_IF

IF(($_time_h = 19)&($_time_m = 10))
    // скрипт  5   
END_IF
WAIT(1)
« Last Edit: May 05, 2021, 12:50:01 PM by Vint »


Viktor77

  • Активный участник
  • ***
  • Posts: 106
    • View Profile
Re: цикл
« Reply #6 on: May 05, 2021, 03:38:11 PM »
Чтобы такое сделать нужно всего лишь каждое утро выпивать одну ложку...  не писать лишнего.
Вот зачем здесь циклы? Они ведь даже подписаны -  "сдерживает". Понятно, что если не нужно сдерживать, то и циклы не нужны.
Code: (clickermann) [Select]
IF(($_time_h = 10)&($_time_m = 10))
// скрипт 1
END_IF

IF(($_time_h = 12)&($_time_m = 10))
// скрипт 2
END_IF

IF(($_time_h = 15)&($_time_m = 10))
// скрипт 3
END_IF

IF(($_time_h = 17)&($_time_m = 10))
// скрипт 4
END_IF

IF(($_time_h = 19)&($_time_m = 10))
// скрипт  5
END_IF
WAIT(1)

будет ли работать такой скрипт корректно? в скриптах 1-5 присутствуют циклы.
Code: (clickermann) [Select]
IF(($_time_h = 10)&($_time_m = 10))
   // скрипт 1
   $check2=0
   WHILE($check2=0)
      GETSCREEN
      colormode(8)
      IF_PICTURE_IN (0,0, $_xmax,$_ymax, "111.bmp", -1, 100)
         LCLICK($_return1+30, $_return2+10)
         WAITMS(1000)
         картинка(0,0, $_xmax,$_ymax, "112.bmp",2,2, 1000,8)
         картинка(0,0, $_xmax,$_ymax, "113.bmp",2,2, 1000,8)
         GETSCREEN
         colormode(8)
         IF_PICTURE_IN (472,473,557,510, "235.bmp", -1, 100)
            $check2=1
            move($_return1, $_return2)
            WAITMS(1000)
         END_IF
      END_IF
   END_CYC
END_IF

IF(($_time_h = 12)&($_time_m = 10))
   // скрипт 2
   GETSCREEN
   COLORMODE(8)
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "88.bmp", -1, 100)
      LCLICK($_return1, $_return2)
      WAITMS(3000)
   END_IF
   GETSCREEN
   COLORMODE(8)
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "89.bmp", -1, 100)
      LCLICK($_return1, $_return2)
      WAITMS(3000)
   END_IF
   GETSCREEN
   COLORMODE(8)
   IF_PICTURE_IN (0,0,$_xmax,$_ymax, "90.bmp", -1, 100)
      LCLICK($_return1, $_return2)
      WAITMS(3000)
   END_IF
   WAITMS(1000)
   $time_check = 0
   WHILE($time_check = 0)
      IF(($_time_h = 12)&($_time_m = 30))
         $time_check = 1
         клик(1271,785,5000)
         клик(521,780,3000)
         $check = 0
         WHILE($check = 0)
            GETSCREEN
            COLORMODE(8)
            IF_PICTURE_IN (0,0, $_xmax,$_ymax, "101.bmp", -1, 100)
               $check = 1
               MOVE($_return1, $_return2)
               WAITMS(3000)
            ELSE
               WAITMS(50)
            END_IF
         END_CYC
         GETSCREEN
         COLORMODE(8)
         IF_PICTURE_IN (0,0, $_xmax,$_ymax, "102.bmp", -1, 100)
            LCLICK($_return1+10, $_return2+8)
            WAITMS(3000)
            GETSCREEN
            COLORMODE(8)
            IF_PICTURE_IN (0,0, $_xmax,$_ymax, "кт.bmp", -1, 100)
               LCLICK($_return1+30, $_return2+10)
               WAITMS(3000)
            END_IF
         END_IF
         WAITMS(1000)
         клик(445,780,3000)
         $check = 0
         WHILE($check = 0)
            GETSCREEN
            COLORMODE(8)
            IF_PICTURE_IN (0,0, $_xmax,$_ymax, "колесо.bmp", -1, 100)
               $check = 1
               MOVE($_return1, $_return2)
               WAITMS(3000)
            ELSE
               WAITMS(50)
            END_IF
         END_CYC
         GETSCREEN
         COLORMODE(8)
         IF_PICTURE_IN (0,0, $_xmax,$_ymax, "галка.bmp", -1, 100)
            LCLICK($_return1+10, $_return2+8)
            WAITMS(3000)
            GETSCREEN
            COLORMODE(8)
            IF_PICTURE_IN (0,0, $_xmax,$_ymax, "крутить колесо захват.bmp", -1, 100)
               LCLICK($_return1+30, $_return2+10)
               WAITMS(3000)
            END_IF
         END_IF
         WAITMS(1000)
      END_IF
   END_CYC
END_IF

IF(($_time_h = 15)&($_time_m = 10))
   // скрипт 3
END_IF

IF(($_time_h = 17)&($_time_m = 10))
   // скрипт 4
END_IF

IF(($_time_h = 19)&($_time_m = 10))
   // скрипт  5
END_IF
WAIT(1)

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: цикл
« Reply #7 on: May 05, 2021, 04:36:50 PM »
И пусть присутствуют. На самом деле это уже совсем другой вопрос - как обеспечить поочерёдную/одновременную работу нескольких веток скрипта.
Если каждый скрипт при данных параметрах таймеров будет работать не более 1ч 59 м 58 сек то всё будет нормально.
Если же, к примеру, скрипт 1 не дождётся 111.bmp или 235.bmp то ясное дело на этом моменте и зациклится. Но точно также он себя поведёт и при первом варианте таймера - сожиданием.
Если такой опасности нет, то всё нормально, если есть, нужно предусмотреть это и ограничить внутренние циклы по времени.

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