Author Topic: Повторение скрипта  (Read 2385 times)

0 Members and 1 Guest are viewing this topic.

zmrvyuls

  • Guest
Повторение скрипта
« on: January 14, 2021, 03:36:15 PM »
Подскажите, как сделать так, чтобы скрипт при повторении выполнял поочередно одно из 4 действий? Например, 1ый раз - нажатие А, 2ой - Б, 3ий - В и 4ый - Г. И так по кругу.

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Повторение скрипта
« Reply #1 on: January 14, 2021, 03:59:41 PM »
Подскажите, как сделать так, чтобы скрипт при повторении выполнял поочередно одно из 4 действий? Например, 1ый раз - нажатие А, 2ой - Б, 3ий - В и 4ый - Г. И так по кругу.

Code: (clickermann) [Select]
inc($var) //наращиваем переменную
SWITCH($var)
CASE(1)
// случай 1
   print("нажатие А")
CASE(2)
// случай 2
   print("Б")
CASE(3)
// случай 3
   print("В")
CASE(4)
// случай 4
   print("Г")
   $var = 0   //обнуляем переменную
END_SWITCH

zmrvyuls

  • Guest
Re: Повторение скрипта
« Reply #2 on: January 14, 2021, 04:22:46 PM »
Спасибо, то что нужно
« Last Edit: January 14, 2021, 04:24:38 PM by zmrvyuls »

zmrvyuls

  • Guest
Re: Повторение скрипта
« Reply #3 on: January 24, 2021, 03:11:16 PM »
Подскажите, как сделать так, чтобы скрипт при повторении выполнял поочередно одно из 4 действий? Например, 1ый раз - нажатие А, 2ой - Б, 3ий - В и 4ый - Г. И так по кругу.

Code: (clickermann) [Select]
inc($var) //наращиваем переменную
SWITCH($var)
CASE(1)
// случай 1
   print("нажатие А")
CASE(2)
// случай 2
   print("Б")
CASE(3)
// случай 3
   print("В")
CASE(4)
// случай 4
   print("Г")
   $var = 0   //обнуляем переменную
END_SWITCH

Можно ли добавить какой-то параметр отвечающий за количество CASE и то, какой из них будет стартовым?
Что-то вроде "Стартовый CASE" = 3, "Количество CASE"  = 3
и скрипт уже бы работал в режиме В, А, Б, В, А, Б, В, А, Б...

Космич

  • Активный участник
  • ***
  • Posts: 265
    • View Profile
Re: Повторение скрипта
« Reply #4 on: January 24, 2021, 06:55:51 PM »
Можно ли добавить какой-то параметр отвечающий за количество CASE

Зачем? :D
«Иногда ты ваяешь до тех пор, пока до тебя не дойдёт, что именно ты делаешь.»

zmrvyuls

  • Guest
Re: Повторение скрипта
« Reply #5 on: January 24, 2021, 07:27:23 PM »
Можно ли добавить какой-то параметр отвечающий за количество CASE

Зачем? :D

Хочу вывести эти два параметра в Окно ввода через inputbox, чтобы каждый раз не редактировать скрипт

Космич

  • Активный участник
  • ***
  • Posts: 265
    • View Profile
Re: Повторение скрипта
« Reply #6 on: January 24, 2021, 10:06:50 PM »
Допустим ты их вывел, а дальше что? Сами по себе кейсы ничего делать не будут
«Иногда ты ваяешь до тех пор, пока до тебя не дойдёт, что именно ты делаешь.»

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Повторение скрипта
« Reply #7 on: January 25, 2021, 12:10:27 AM »
Можно ли добавить какой-то параметр отвечающий за количество CASE и то, какой из них будет стартовым?
Что-то вроде "Стартовый CASE" = 3, "Количество CASE"  = 3
и скрипт уже бы работал в режиме В, А, Б, В, А, Б, В, А, Б...
Хочу вывести эти два параметра в Окно ввода через inputbox, чтобы каждый раз не редактировать скрипт

Code: (clickermann) [Select]
IF($start_CASE = 0)  //начальные параметры
   $start_CASE = inputbox("Стартовый CASE", 1, 10)
   $amount_CASE = inputbox("Количество CASE", 4, 10)
END_IF

SWITCH($start_CASE)
   CASE(1)
      // случай 1
      print("А")
   CASE(2)
      // случай 2
      print("Б")
   CASE(3)
      // случай 3
      print("В")
   CASE(4)
      // случай 4
      print("Г")
   DEFAULT
      print("Недопустимые начальные параметры.")
      halt
END_SWITCH

IF($amount_CASE = $start_CASE) //возврат к началу, если параметр кол-ва кейсов сровнялся с последним в переключателе
   $start_CASE = 0
END_IF

inc($start_CASE) //наращиваем переменную



А теперь вопрос у меня:
Справка -  "DEFINE ($var, [value] ), инструкция сработает только если переменная не была объявлена раньше. В противном случае инструкция игнорируется."
Почему DEFINE ($start_CASE, inputbox("Стартовый CASE", 1, 10)) каждый раз вызывает inputbox?
Естественно это не критично, просто без лишних мыслей сперва написал именно так... не прокатило.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Повторение скрипта
« Reply #8 on: January 25, 2021, 01:13:41 PM »
А теперь вопрос у меня:
Справка -  "DEFINE ($var, [value] ), инструкция сработает только если переменная не была объявлена раньше. В противном случае инструкция игнорируется."
Почему DEFINE ($start_CASE, inputbox("Стартовый CASE", 1, 10)) каждый раз вызывает inputbox?
Естественно это не критично, просто без лишних мыслей сперва написал именно так... не прокатило.
Вызывается то inputbox каждый раз, но значение не присваивается.
Видимо проверка производится после синтаксического разбора. Т.е. разбираем DEFINE получаем имя переменной и параметр и тут загвоздка, параметр состоит из функции, нужно вызвать функцию. Потом проверяем что переменная существует и не присваиваем значение, если да.
Проверка должна стоять после считывания имени переменной и до чтения параметра (и его разбора).
Боюсь Джонни не до таких мелких фиксов. Напиши на всякий случай в ошибки.
« Last Edit: January 25, 2021, 06:06:48 PM by Vint »


Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Повторение скрипта
« Reply #9 on: January 25, 2021, 06:03:31 PM »
Ну почему же? Ведь после обнуления $start_CASE = 0 она сразу наращивается inc($start_CASE). Значит IF($start_CASE = 0) сработает только один раз при запуске скрипта.
Недоглядел  :-\

До последней строки не домотал чуть, а про case подумал что с нуля.