Author Topic: Помогите написать без goto так сказать оптимизировать  (Read 2941 times)

0 Members and 2 Guests are viewing this topic.

scat

  • Освоившийся
  • **
  • Posts: 23
    • View Profile
sk:

GETSCREEN
WAITMS(RND(50,60))
IF_PIXEL_IN(805,460, 879,475, 205044)
   $check1 = $check1 - 70
   LOGWRITE("минус" $check1)
   GOTO(sk1)
ELSE
   WAITMS(RND(20,40))
   GOTO(sk5)
END_IF

sk5:
GETSCREEN
WAITMS(RND(50,60))
IF_PIXEL_IN(720,460, 804,475, 205044)
   $check1 = $check1 + 135
   LDOWN(1054,475)
   WAITMS(RND(1500 + $check1, 1550 + $check1))
   LUP(1054,475)
   LOGWRITE("плюс" $check1)
   GOTO(sk5)
ELSE
   WAITMS(RND(20,40))
   GOTO(sk)
END_IF
« Last Edit: April 18, 2019, 12:20:49 PM by scat »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
а GOTO(sk1) это куда? В скрипте нет такой метки.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Ну допустим GOTO(sk1) должна идти к sk:

Code: (clickermann) [Select]
$check = 0
WHILE($check = 0)
   GETSCREEN
   IF_PIXEL_IN(805,460, 879,475, 205044)
      INC($t,-70)
      LOGWRITE("минус ", $t)
      WAITMS(50)
   ELSE
      WAITMS(RND(20,40))
      $check = 1
   END_IF
END_CYC

$check = 0
WHILE($check = 0)
   GETSCREEN
   IF_PIXEL_IN(805,460, 879,475, 205044)
      INC($t,+135)
      LOGWRITE("плюс ", $t)
      $r = RND(1500,1550)+$t
      IF($r < 0) // защита против возможного минусового значения задержки
         $r = 0
         $t = 0
      END_IF     
      LDOWN(1054,475)
      WAITMS($r)
      LUP(1054,475)
      WAITMS(RND(40,60))
   ELSE
      WAITMS(RND(20,40))
      $check = 1
   END_IF
END_CYC
« Last Edit: April 18, 2019, 12:58:34 PM by Oraven »

scat

  • Освоившийся
  • **
  • Posts: 23
    • View Profile
Огромное спасибо  за помощь буду разбираться. Ни как недатукаю как происходит переход к  нужной  строчки .
метки  как в гото нет (

scat

  • Освоившийся
  • **
  • Posts: 23
    • View Profile
еще раз объясните на примере
есть точки 1
                   2.
                   3
                   4 // выполнить цыкал  и прыгнут на 2 точку
                   5
как это сделать без гото

scat

  • Освоившийся
  • **
  • Posts: 23
    • View Profile
а ничего, что в этом случае пункт 5 у вас никогда не сработает?

для этого есть ELSE

вопрос про другое ;)

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Огромное спасибо  за помощь буду разбираться. Ни как недатукаю как происходит переход к  нужной  строчки .
метки  как в гото нет (

Code: (clickermann) [Select]
$check = 0 // присваиваем переменной $check (имя может быть любым) значение 0
WHILE($check = 0) // цикл выполняется если $check равна 0
   GETSCREEN
   IF_PIXEL_IN(805,460, 879,475, 205044)
      INC($t,-70)
      LOGWRITE("минус ", $t)
      WAITMS(50)
   ELSE
      WAITMS(RND(20,40))
      $check = 1 // если цвет не найден, меняем значение переменной. Теперь при следующей проверки условия цикл прекратит выполняться и выполнение пойдет ниже цикла после END_CYC
   END_IF
END_CYC

scat

  • Освоившийся
  • **
  • Posts: 23
    • View Profile
Огромное спасибо  за помощь буду разбираться. Ни как недатукаю как происходит переход к  нужной  строчки .
метки  как в гото нет (

Code: (clickermann) [Select]
$check = 0 // присваиваем переменной $check (имя может быть любым) значение 0
WHILE($check = 0) // цикл выполняется если $check равна 0
   GETSCREEN
   IF_PIXEL_IN(805,460, 879,475, 205044)
      INC($t,-70)
      LOGWRITE("минус ", $t)
      WAITMS(50)
   ELSE
      WAITMS(RND(20,40))
      $check = 1 // если цвет не найден, меняем значение переменной. Теперь при следующей проверки условия цикл прекратит выполняться и выполнение пойдет ниже цикла после END_CYC
   END_IF
END_CYC



ага по последовательности выполнения скрипта я понял . Как вверх прыгнуть ?

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
ага по последовательности выполнения скрипта я понял . Как вверх прыгнуть ?

Выполнение доходит до конца скрипта и начинается сначала, прыгать никуда не нужно.

scat

  • Освоившийся
  • **
  • Posts: 23
    • View Profile
а ничего, что в этом случае пункт 5 у вас никогда не сработает?

для этого есть ELSE

вопрос про другое ;)
Code: (clickermann) [Select]
ELSE
   WAITMS(RND(20,40))
   GOTO(sk5)
END_IF

sk5:
судя по этому участку кода вы неверно понимаете, как работает ELSE



я подразумевал ELSE  как вилку плсле которой скрипт можно двигать в любом направлении

scat

  • Освоившийся
  • **
  • Posts: 23
    • View Profile
ага по последовательности выполнения скрипта я понял . Как вверх прыгнуть ?

Выполнение доходит до конца скрипта и начинается сначала, прыгать никуда не нужно.


ясно спс