Author Topic: Повтор действия, увеличивающийся  (Read 4181 times)

0 Members and 1 Guest are viewing this topic.

Синичка

  • Освоившийся
  • **
  • Posts: 29
    • View Profile
Повтор действия, увеличивающийся
« on: August 29, 2014, 02:35:57 PM »
Здравствуйте.
Имеется примерный код

Code: [Select]
//имя
DBLCLICK(996,696) 
WAITMS(500)
//вниз
LCLICK(1116,966) 
WAITMS(500)
//выбрать                   
LCLICK(996,934) 
WAITMS(500)
//Подтверждение       
KEYDOWN (#ENTER)   
KEYUP (#ENTER)
WAITMS(3000) 
//переход
LCLICK(807,784)   
WAITMS(2000)

Этот цикл повторяется раз 20-40.
Но каждый раз нужно как-то сделать, чтобы количество повторов действия

Code: [Select]
//вниз
LCLICK(1116,966) 
WAITMS(500)

увеличивалось на 1. То есть, чтобы во второй раз это действие повторилось уже 2 раза. В третий раз чтобы увеличилось еще на 1, то есть, чтобы оно повторилось уже 3 раза. И так по увеличению, пока все циклы не закончатся

Делать так:

Code: [Select]
sub(Вниз)
LCLICK(1116,966) 
WAITMS(500)
end_sub

//имя
DBLCLICK(996,696) 
WAITMS(500)

FOR ($i, $i<1) 
//вызов подпрограммы
Вниз()
END_CYC

//выбрать                   
LCLICK(996,934) 
WAITMS(500)
//Подтверждение       
KEYDOWN (#ENTER)   
KEYUP (#ENTER)
WAITMS(3000) 
//переход
LCLICK(807,784) 
WAITMS(2000)

//имя
DBLCLICK(996,696) 
WAITMS(500)

FOR ($i, $i<2) 
//вызов подпрограммы
Вниз()
END_CYC

//выбрать                   
LCLICK(996,934) 
WAITMS(500)
//Подтверждение       
KEYDOWN (#ENTER)   
KEYUP (#ENTER)
WAITMS(3000) 
//переход
LCLICK(807,784) 
WAITMS(2000)

Но так будет слишком много места занимать

Или так:

Code: [Select]
sub(Имя)
DBLCLICK(996,696) 
WAITMS(500)
end_sub

sub(Вниз)
LCLICK(1116,966) 
WAITMS(500)
end_sub

sub(Остаток)
//выбрать                   
LCLICK(996,934) 
WAITMS(500)
//Подтверждение       
KEYDOWN (#ENTER)   
KEYUP (#ENTER)
WAITMS(3000) 
//переход
LCLICK(807,784) 
WAITMS(2000)
end_sub

FOR ($i, $i<1) 
//вызов подпрограммы
Имя()
END_CYC
FOR ($i, $i<1) 
//вызов подпрограммы
Вниз()
END_CYC
FOR ($i, $i<1) 
//вызов подпрограммы
Остаток()
END_CYC

FOR ($i, $i<1) 
//вызов подпрограммы
Имя()
END_CYC
FOR ($i, $i<2) 
//вызов подпрограммы
Вниз()
END_CYC
FOR ($i, $i<1) 
//вызов подпрограммы
Остаток()
END_CYC

и так тоже места много, но хотя бы при исправлении координат не придется изменять всё. Или есть другой способ? Извините, но в кодах я не понимаю ровно ничего(
« Last Edit: August 29, 2014, 02:39:22 PM by Синичка »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Повтор действия, увеличивающийся
« Reply #1 on: August 29, 2014, 02:53:14 PM »
Code: (clickermann) [Select]
$count1 = RND(20,40)
$count2 = 1
FOR($a,$a<$count1)
   //имя
   DBLCLICK(996,696)
   WAITMS(500)
   //вниз
   
   FOR($b,$b<$count2)
      LCLICK(1116,966)
      WAITMS(500)
   END_CYC
   INC($count2,1)
   
   //выбрать
   LCLICK(996,934)
   WAITMS(500)
   //Подтверждение
   KEYDOWN (#ENTER)
   KEYUP (#ENTER)
   WAITMS(3000)
   //переход
   LCLICK(807,784)
   WAITMS(2000)
END_CYC

HALT

aden

  • Оплот сообщества
  • ****
  • Posts: 363
    • View Profile
Re: Повтор действия, увеличивающийся
« Reply #2 on: August 29, 2014, 02:59:21 PM »
как то так
Code: (clickermann) [Select]
for($i, $i<30)
//основной скрипт
   print("i=",$i)
   for($j,$j<$i)
//   повторяемый скрипт с увеличение повторений
      print("j=",$j)
   end_cyc   
end_cyc

Синичка

  • Освоившийся
  • **
  • Posts: 29
    • View Profile
Re: Повтор действия, увеличивающийся
« Reply #3 on: August 29, 2014, 03:04:20 PM »

Если написать

Code: [Select]
$count2 = 2
То каждый раз повторение будет увеличиваться на 2? То есть, если в первый раз повтор был 1 раз, то в следующий раз действие повторится 3 раза?


Не могу понять, как действует( то есть для основного просто прописано ограничение, а для второго нет? Или тут что-то другое?  нет, не могу понять, как будет работать(

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Повтор действия, увеличивающийся
« Reply #4 on: August 29, 2014, 03:13:50 PM »
Ну причем тут $count2 = 1 наращивание происходит через инк! INC($count2,1)

aden забыл что цикл начинается с 0 так что в первый раз внутренний цикл вообще не отработает.

Синичка

  • Освоившийся
  • **
  • Posts: 29
    • View Profile
Re: Повтор действия, увеличивающийся
« Reply #5 on: August 29, 2014, 03:17:09 PM »
Ну причем тут $count2 = 1 наращивание происходит через инк! INC($count2,1)

Простите, просто было предположение) Спасибо, всё работает

Синичка

  • Освоившийся
  • **
  • Posts: 29
    • View Profile
Re: Повтор действия, увеличивающийся
« Reply #6 on: December 19, 2014, 10:58:16 AM »
Здравствуйте.
Почему-то перестало работать "повторение"... Я не понимаю, почему) он просто нажимает 1 раз при каждом и всё, хотя должно быть по нарастающей - нажать один раз, в следующий нажать два раза... раньше работало) сейчас не знаю, где ошибка, прошу помощи)

Code: [Select]
WAITMS(500)
$count1 = 158   
$count2 = 1
FOR($a,$a<$count1)
      //имя
      DBLCLICK(121,445)   
      WAITMS(1000)
   FOR($b,$b<$count2)
      //ПОВТОРЕНИЕ <<<<<<<<
      LCLICK(1700,554) 
      WAITMS(500)
   END_CYC
   
   INC($count2,1)     
//выбрать                   
LCLICK(1672,554)
WAITMS(1000)
//соединение         
KEYDOWN (#ENTER)   
KEYUP (#ENTER)
WAITMS(5000) 
LCLICK(788,249) 
WAITMS(1000)
//выход
LCLICK(1742,208) 
WAITMS(5000)
END_CYC
 
HALT

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Повтор действия, увеличивающийся
« Reply #7 on: December 19, 2014, 11:15:37 AM »
FOR($a=0,$a<$count1)
....
   FOR($b=0,$b<$count2)

Потому, что изменения в версии 4.11

P.S. Бородатый...
Буратино дали три яблока. Два он съел. Сколько яблок осталось у Буратино? Думаете одно? Ничего подобного. Никто же не знает, сколько у него уже было яблок до этого. Мораль — обнуляйте переменные!
« Last Edit: December 19, 2014, 11:17:47 AM by Vint »