Author Topic: Прошу небольшой помощи  (Read 1678 times)

0 Members and 1 Guest are viewing this topic.

qazqaz0

  • Зашел в гости
  • *
  • Posts: 2
    • View Profile
Прошу небольшой помощи
« on: December 29, 2020, 01:19:46 PM »
Всем привет!!  Рад  что  смог  зарегистрироваться .  Не  дает  регистрацию  на майл ру и джемаил.
Прошу небольшой помощи ,только  начал  осваивать программу.  Видел похожий пример  с перебором картинок .
Как сделать  с #include (  во  внешнем коде  только  переключение на новый счет . ) Чтобы  не  писать основное тело  программы 18  раз  в каждом  #include   Так выдает  ошибку   #include "$a.cms"  Как сделать  правильно  чтобы он  присваивал  значения из  цикла FOR  Чтобы 18  раз  запускал  #include (  они немного разные ) в цикле . И  второй вопрос  как правильно  в конце цикла обнулять  переменную . Например:   в цикле остановился с ошибкой на  #include 15 ( 15  счет )  Необходимо  чтобы при  следующем запуске он  стартовал (-1)  с 14 #include 14   Если все 18  счетов пройдены начинал  с 1 счета .. Понимаю  надо  переменную $a  как то  правильно  в конце прописать  и  обнулить  если $a=18 . И цикл  FOR  должен  начинаться с правильной переменной. Если  все 18  пройдены  с 1 .. Если  нет - то  последний счет  где была ошибка  (-1)
 Спасибо  заранее.



// 29.12.2020
#name "New Script"


print("Hello, world!")

FOR($a=0, $a < 18)
#include "$a.cms" -  так не  работает выдает ошибку.
 И  так 18 раз  вывести  с 1 по  18 include
 //////  бла бла бла
 
Здесь  основной цикл:
 //  основное тело  программы .Одинаковое для 18  счетов
 END_CYC
HALT

« Last Edit: December 29, 2020, 02:42:22 PM by qazqaz0 »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Прошу небольшой помощи
« Reply #1 on: December 29, 2020, 03:57:27 PM »
#include "$a.cms" -  так не  работает выдает ошибку.
Естественно. В include должно быть явно указано имя подключаемого файла. А файла с именем $a.cms у тебя нет.

include это директива препроцессора (всё что начинается с #). Директивы исполняются до запуска основного кода где бы они не стояли. Само собой использовать переменные в них нельзя, т.к. переменных ещё нет.

И  второй вопрос  как правильно  в конце цикла обнулять  переменную
Code: (clickermann) [Select]
UNDEFINE($var)

Как сделать  правильно  чтобы он  присваивал  значения из  цикла FOR  Чтобы 18  раз  запускал  #include (  они немного разные ) в цикле . И  второй вопрос  как правильно  в конце цикла обнулять  переменную . Например:   в цикле остановился с ошибкой на  #include 15 ( 15  счет )  Необходимо  чтобы при  следующем запуске он  стартовал (-1)  с 14 #include 14   Если все 18  счетов пройдены начинал  с 1 счета .. Понимаю  надо  переменную $a  как то  правильно  в конце прописать  и  обнулить  если $a=18 . И цикл  FOR  должен  начинаться с правильной переменной. Если  все 18  пройдены  с 1 .. Если  нет - то  последний счет  где была ошибка  (-1)
Неправильное решение. Нужно делать как-то иначе. Чтобы знать как надо знать что находится в этих 18 инклюдах, может и не нужно столько их.

В самом простом и худшем варианте можно написать так
Code: (clickermann) [Select]
SUB(main)
    //  основное тело  программы .Одинаковое для 18  счетов
END_SUB

#include "0.cms"
main()
#include "1.cms"
main()
#include "2.cms"
main()
... И  так 18 раз   с 0 по  17 include
#include "17.cms"
main()

HALT


Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Прошу небольшой помощи
« Reply #2 on: December 29, 2020, 04:26:40 PM »
А по поводу запоминания и повторного старта, нужно сохранять выполняемый номер в файл. Хоть в txt, хоть ini А в начале читать из файла.
Но для этого лучше избавиться от номерных инклюдов или в крайнем случае запихнуть их в свитч.

Code: (clickermann) [Select]
SUB(main)
    //  основное тело  программы .Одинаковое для 18  счетов
END_SUB


$current = INIREAD("config.ini", "current")
IF(($current = "") | ($current = 0) | ($current > 17))
    $start = 0
ELSE
    $start = $current - 1
END_IF

LOGWRITE("Последний обрабатываемый '", $current, "'.  Стартуем с № ", $start)
FOR($i=$start, $i < 18)
    LOGWRITE("Текущий: ", $i)
    INIWRITE("config.ini", "current", $i)
    SWITCH($i)
        CASE(0)
            #include "0.cms"
        CASE(1)
            #include "1.cms"
        CASE(2)
            #include "2.cms"
            // ...И  так 18 раз
        CASE(17)
            #include "17.cms"
    END_SWITCH
    main()
END_CYC
INIWRITE("config.ini", "current", 0)

HALT


qazqaz0

  • Зашел в гости
  • *
  • Posts: 2
    • View Profile
Re: Прошу небольшой помощи
« Reply #3 on: December 29, 2020, 07:44:00 PM »
Уважаемый Vint .. Огромное спасибо....  Мне такое точно  ене осилить самому написать .Буду пробовать. Изначально  с подпрограммой  совсем не получилось... Но основная проблема была -пройдя 10  счетов в игре-  все начинать по  новой. 
В инклюдах практически  все одинаково.  Буду делать  как у ВАС-  не получиться  Попрошу помощи
Вот  пример
 LCLICK(429,59) //  иконка для пер  на  счет
WAIT(3)
LCLICK(823,56)   // шестеренка для пер  на  счет
WAIT(3)
LCLICK(464,181)  // наж  аккаунт
WAIT(2)
LCLICK(727,444)   // измен  ак
WAIT(5)
 $var=0
WHILE($var=0)
   LCLICK(645,303)  // выбр  гугл
   WAIT(14)
   LDOWN(683,558)
   WAIT(1)
   MOVER(706,391)
   WAIT(1)
   LUP(706,391)
   WAIT(1)
   GETSCREEN
   COLORMODE(6)
   GETSCREEN( 443,471,481,759,)
   COLORMODE(6)
   
   IF_PICTURE_IN (443,471,481,759, "велбит7.bmp", -1,70)
      dbLCLICK($_return1, $_return2)
      LOGWRITE ("счет  найден")
      WAIT(9)
      LCLICK(528,526)
      WAIT(4)
      dbLCLICK(538,530)
      WAIT(2)
     
      $var=1
   ELSE
      LOGWRITE ("счет нет")
     
      GETSCREEN
      COLORMODE(6)
      IF_PICTURE_IN (641,508,816,534,"ош гугл.bmp", -1,70)
         dbLCLICK($_return1, $_return2)
         LOGWRITE (" ошибка гугл ")
         WAIT(5)
       
      END_IF
   ELSE
      LOGWRITE (" гугл еше раз ")
      WAIT(9)
   END_IF
END_CYC
WAIT(12)

 GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (646,546,799,581, "пр Гугл.bmp", -1,70)
   LOGWRITE ("принять условия проверка ")
   LCLICK(727,568)
   WAIT(18)
END_IF
WAIT(8)

По  сути  только  несколько  строк меняется.  картинка и  координаты поиска .
Вот  эти  Значит  я их  запихаю  св инклюд  а все остальное пропишу в основной программе
  LDOWN(683,558)
   WAIT(1)
   MOVER(706,391)
   WAIT(1)
   LUP(706,391)
   WAIT(1)
   GETSCREEN
   COLORMODE(6)
   GETSCREEN( 443,471,481,759,)
   COLORMODE(6)
   
   IF_PICTURE_IN (443,471,481,759, "велбит7.bmp", -1,70)
      dbLCLICK($_return1, $_return2)
      LOGWRITE ("счет  найден")
      WAIT(9)
      LCLICK(528,526)
      WAIT(4)
      dbLCLICK(538,530)
      WAIT(2)