Author Topic: Две переменные  (Read 2730 times)

0 Members and 1 Guest are viewing this topic.

ee33e

  • Зашел в гости
  • *
  • Posts: 15
    • View Profile
Две переменные
« on: December 17, 2016, 11:23:06 PM »
Подскажите, пожалуйста, что исправить в сценарии! Нужно поочередно вводить два значения i и j, но застревает на j, после первого цикла только j начинает перебирать.

Code: (clickermann) [Select]
FOR($i=1, $i < 5.6, 0.08)

LDOWN(719,342) 
WAITMS(100)
LUP(815,345) 
WAITMS(100)
LOGWRITE("i",$i)

KEYSTRING($i, 100)
WAITMS(1500)

FOR($j=5.6, $j > 1, -0.08)

LDOWN(719,369) 
WAITMS(100)
LUP(815,373) 
WAITMS(100)
LOGWRITE("j",$j)

KEYSTRING($j, 100)
WAITMS(1500)

END_CYC
WAITMS(100)

HALT

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Две переменные
« Reply #1 on: December 18, 2016, 08:41:47 AM »
Не хватает одного END_CYC

Верный код
Code: (clickermann) [Select]
FOR($a=1, $a < 5.6, 0.08)
   
   LDOWN(719,342)
   WAITMS(100)
   LUP(815,345)
   WAITMS(100)
   
   KEYSTRING($a, 100)
   WAITMS(1500)
   
   FOR($b=5.6, $b > 1, -0.08)
   
      LOGWRITE("A: ", $a, " B: ", $b)
      LDOWN(719,369)
      WAITMS(100)
      LUP(815,373)
      WAITMS(100)       
     
      KEYSTRING($b, 100)
      WAITMS(1500)
     
   END_CYC
   
END_CYC

HALT
« Last Edit: December 18, 2016, 08:43:26 AM by Oraven »

ee33e

  • Зашел в гости
  • *
  • Posts: 15
    • View Profile
Re: Две переменные
« Reply #2 on: December 18, 2016, 07:16:49 PM »
Все-равно только вторую переменную вписывает(((

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Две переменные
« Reply #3 on: December 18, 2016, 08:54:31 PM »
Работает так как задумано, я просто исправил у тебя ошибку, но щас вчитался в первый пост и понял что тебе нужен 1 цикл. Пишется это так.
Нужно также помнить чтобы KEYSTRING вводила символы правильно раскладки кликера и целевого окна должны быть En
Code: (clickermann) [Select]
$a=1
$b=5.6
WHILE(($a < 5.6)&($b > 1))
   LOGWRITE("A: ", $a, " B: ", $b)
   
   LDOWN(719,342)
   WAITMS(100)
   LUP(815,345)
   WAITMS(100)
   
   KEYSTRING($a, 100) // не многовата задержка?
   WAITMS(1500)
   
   LDOWN(719,369)
   WAITMS(100)
   LUP(815,373)
   WAITMS(100)
   
   KEYSTRING($b, 100)
   WAITMS(1500)
   
   $a = $a + 0.08
   $b = $b - 0.08
   
END_CYC

HALT

ee33e

  • Зашел в гости
  • *
  • Posts: 15
    • View Profile
Re: Две переменные
« Reply #4 on: December 19, 2016, 02:17:20 PM »
Спасибо! Так работает на ура!)
Там задержки нужны для вставки других команд попутных, сохраняются долго данные.


Подскажите, пожалуйста, как сюда добавить рандомность? А ещё лучше управляемую рандомность, т.е. чем ближе $a к 5.6, тем ближе рандомное число сдвигается к 0.004, а чем дальше $a от 5.6, тем ближе к -0.004.

$a = $a + 0.08 + рандомное число (от -0.004 до 0.004)

если $a > 2.8, то
$a = $a + 0.08 + рандомное число (от 0 до 0.004)...

или столько условий сразу нельзя ставить? чет неполучается((( тогда просто рандомное число добавлять.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Две переменные
« Reply #5 on: December 19, 2016, 03:27:20 PM »
Так:
Code: (clickermann) [Select]
IF($a > 2.8)
$a = $a + 0.08 + RND(0, 4)/1000
ELSE
$a = $a + 0.08 + RND(0, -4)/1000
END_IF


ee33e

  • Зашел в гости
  • *
  • Posts: 15
    • View Profile
Re: Две переменные
« Reply #6 on: December 19, 2016, 06:20:02 PM »
Точно, только с целыми числами работает, а я то думаю! Спасибо!

ee33e

  • Зашел в гости
  • *
  • Posts: 15
    • View Profile
Re: Две переменные
« Reply #7 on: December 22, 2016, 10:00:49 PM »
Ребята! Вот такой вопрос родился сейчас, как можно после выполнения вышеописанного цикла, снова запустить такой же, только присвоить переменным другие значения, или вообще другие переменные взять, и шаг изменить и рандом? Не догоняю)))


Иии самое главное, чтобы рандомное число при выполнении следующего цикла, не учитывалось!
Вот прошел один цикл:

 $a = $a + 0.08 + RND(0, -4)/1000

$а стала 1,008+ рнд(0,004)=1,012

WHILE($a < 5.6) - ещё действует условие, и в следующем цикле

$а уже =1,012+рандом, а мне надо чтобы было =1,008+рандом

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

Может все просто, убрать рандом из формулы и добавить его в KEYSTRING($a + RND(4, -4)/1000, 100) ?? так будет работать правильно? Вроде правильно))
« Last Edit: December 23, 2016, 11:32:33 AM by ee33e »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Две переменные
« Reply #8 on: December 23, 2016, 12:53:46 PM »
...как можно после выполнения вышеописанного цикла, снова запустить такой же, только присвоить переменным другие значения, или вообще другие переменные взять, и шаг изменить и рандом? Не догоняю)))

Иии самое главное, чтобы рандомное число при выполнении следующего цикла, не учитывалось!
Не понятно. Цикл здесь только один
Code: (clickermann) [Select]
WHILE(($a < 5.6)&($b > 1))
   //...
END_CYC

Такой же это ещё один дописать?
Или этот же запустить снова с другими значениями?
Или ты называешь циклом и сам цикл и его итерации (проходы). Одним словом. Это вызывает путаницу.

Циклом называй конструкцию. Если их две - 2 цикла.
Если 2 раза запускается цикл - это его "запуски" или "работа".
Каждый проход цикла (тела цикла) - это итерация. Можно "проход".

И приводи твой код на текущий момент, если он отличается от последнего в постах. Вот где сейчас собирать по кускам то с чем ты работаешь?
Не все же сидят днями с твоей задачей в голове.
« Last Edit: December 23, 2016, 12:57:35 PM by Vint »


Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Две переменные
« Reply #9 on: December 23, 2016, 01:01:20 PM »
А в чём сложность ввести для конечного результата новую переменную и её уже обрабатывать.
А обычную $a оставить без RND

Code: (clickermann) [Select]
$a = $a + 0.08
IF(($a - 0.08) > 2.8)
    $aa = $a + RND(0, 4)/1000
ELSE
    $aa = $a + RND(0, -4)/1000
END_IF