Author Topic: Применение GOTO  (Read 8750 times)

0 Members and 1 Guest are viewing this topic.

Форвард

  • Зашел в гости
  • *
  • Posts: 8
    • View Profile
Применение GOTO
« on: February 26, 2013, 08:46:25 AM »
Хотел назвать тему - нубское применение нубского GOTO нубскими нубами,
но все же решив, что в более общую тему могут обратиться разные люди дал общее название.

Дано:
кликер 4.7 SE, Win7

Предистория:
Не зная, что в кликере 4.7 отменен переход GOTO по строкам родил "шедевр":

Code: (clickermann) [Select]
SUB(timer1)//
GOTO(RNDFROM(6,11,16,21,26,31,36,41,46,51,56,61)
// 6 строка
WAITMS(RND(3000,6000))
LCLICK(RND(),RND())
WAITMS(RND(1000,2000))
GOTO(70)
// 11 строка
WAITMS(RND(3000,6000))
LCLICK(RND(),RND())
WAITMS(RND(1000,2000))
GOTO(70)
---------удалил повторы внутри САБа чтобы тут выложить---------
//61 строка
WAITMS(RND(3000,6000))
LCLICK(RND(),RND())
WAITMS(RND(1000,2000))
GOTO(70)
 // 70 строка
END_SUB

Этот "шедевр" в оконном режиме кликал не по одному единственному клику внутри САБа как надо было, а по всем подряд до конца САба до самого ЭНД_САБ

История:

Вчера внес в "шедевр"  исправления так как узнал что кликер 4.7 не работает по строкам.

Code: (clickermann) [Select]
SUB(timer1)// Блок выбора ... для таймера
GOTO(RND(3,16)) // тут убрал RNDFROM с перечислением
3://
WAITMS(RND(3000,6000))
LCLICK(RND(),RND())
WAITMS(RND(1000,2000))
GOTO(19)
4://
WAITMS(RND(3000,6000))
LCLICK(RND(),RND())
WAITMS(RND(1000,2000))
GOTO(19)
----------удалил повторы внутри САБа чтобы тут выложить-----------
16://Пройти все
WAITMS(RND(3000,6000))
GOSUB(luna2)
WAITMS(RND(1000,2000))
GOTO(19)
17: запасная
18: запасная
19://
END_SUB

Проблема:

Второй исправленый САБ теперь кликает при вызове этого САБа только по первой метке 3:
и все - никакого рандома нет и не переходит на другие метки.

Вру - на 19: метку как то переходит!!! На другие не хочет....

Повторюсь - все это в оконном режиме.
Кликать надо в разные места.... потому и столько ЛКЛИКов...
И прыгать через GOTO надо только внутри САБа.

Осталось попробовать вернуть GOTO(RNDFROM(с перечислением всех меток))
Но не уверен что поможет... но проверю...

И до кучи -
в другом месте этого же кода в оконном режиме и не в САБе:
GOTO(RNDFROM(20,21,22)
давало прыжок только на 20 метку (и тут и в начале только первая цифра срабатывает)
но к этой строке статистики обращений мало, а к описанным в начале много.
« Last Edit: February 27, 2013, 05:12:09 AM by Johnny »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Применение GOTO
« Reply #1 on: February 26, 2013, 09:30:55 AM »
Это из-за того, что убрали явное разделение на числовые и строковые переменные.
Твоя строка GOTO(19) срабатывает правильно, потому, что в таком виде она строковая (текст).
Она и переходит на ТЕКСТОВУЮ метку 19:

А после RND ты получаешь число.


Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Применение GOTO
« Reply #2 on: February 26, 2013, 09:36:20 AM »
Зачем тебе здесь GOTO? Выдели одну переменную и сделай нормально с условиями.

Code: (clickermann) [Select]
SUB(timer1)// Блок выбора ... для таймера
   $var=RND(3,16)
   IF($var = 3)
      WAITMS(RND(3000,6000))
      LCLICK(RND(),RND())
      WAITMS(RND(1000,2000))
   END_IF
   
   IF($var = 4)
      WAITMS(RND(3000,6000))
      LCLICK(RND(),RND())
      WAITMS(RND(1000,2000))
   END_IF
   
   ----------удалил повторы внутри САБа чтобы тут выложить-----------
   IF($var = 16)
      WAITMS(RND(3000,6000))
      GOSUB(luna2)
      WAITMS(RND(1000,2000))
   END_IF
END_SUB
« Last Edit: February 26, 2013, 09:38:38 AM by Vint »


Форвард

  • Зашел в гости
  • *
  • Posts: 8
    • View Profile
Re: Применение GOTO
« Reply #3 on: February 26, 2013, 02:36:47 PM »
ОГО!
Реально красиво!
Спасибо огроменное за разъяснение!
Буду теперь все перегонять в переменные.
Ну а зачем мне тут GOTO - да уже не за чем.
Просто я не догонял до этого объяснения зачем вообще нужны какие-то переменные....
И тыкался с тем, что вроде понятно было....