Author Topic: Выполнение теста с помощью кликера  (Read 1401 times)

0 Members and 1 Guest are viewing this topic.

Tikon

  • Зашел в гости
  • *
  • Posts: 1
    • View Profile
Есть тест в котором 25 вопросов. Выполнение его я реализовал с помощью "if_picture_in" поиск вопроса, а после поиск верного варианта. И у меня такой вопрос, можно ли сделать так чтобы сперва кликер сканил экран на наличие одной из 25 картинок, а после запускал определенное действие, и при следующем поиске игнорировал уже бывший вопрос?

Атеист

  • Guest
Re: Выполнение теста с помощью кликера
« Reply #1 on: May 22, 2017, 11:57:56 PM »
Может быть несколько разных реализаций, но в любом случае, это будет цикличный перебор имен картинок. Список имен удобно хранить в массиве и считывать (или извлекать) их по номеру ячейки. Создавать массив тоже можно по-разному.
Один из вариантов, для примера...
Code: (clickermann) [Select]
TFREADARR("Список картинок.txt", $arr) // загружаем список имен картинок в память (в массив $arr)

$arrsize = ARRSIZE($arr) // размер массива

// То что написано выше, нельзя перечитывать дважды за всё время выполнения скрипта,
// так как данные из ячеек массива (в этом сценарии) не извлекается, а просто считываются,
// а сам массив не уничтожается.

//--------------------------------

WHILE(1) // для примера - бесконечный цикл, выход из которого только по условию
   
   IF($n < $arrsize) // переменная-счетчик $n - это номер ячейки массива с именами картинок (отсчет ведется от нуля)
     
      // Если картинка лежит не рядом со скриптом, а например в папке рядом с ним,
      // и в файле "Список картинок.txt" имена картинок без путей и файловых расширений, тогда...
     
      $bmp_name = STRCONCAT("images\", $arr[$n], ".bmp") // собираем строку... путь + имя картинки + расширение в переменную
     
      GETSCREEN
      IF_PICTURE_IN (0,0, $_xmax,$_ymax, $bmp_name) // подставляем переменную в функцию поиска картинки
         // какое-то действие
         LOGWRITE ("Картинка найдена. Зачёт!")
         HALT // выход
      END_IF
     
      INC($n, 1) // картинка уже использована 1 раз - наращиваем счетчик на единицу (получаем номер следующей ячейки массива)
     
   ELSE
     
      LOGWRITE ("Картинки закончились.")
      HALT // выход
     
   END_IF
   
   WAITMS(100)
   
END_CYC

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Выполнение теста с помощью кликера
« Reply #2 on: May 23, 2017, 08:16:22 AM »
Имена картинок должны быть в таком виде
Вопрос_1.bmp - Вопрос_25.bmp
Ответ_1.bmp - Ответ_25.bmp

Code: (clickermann) [Select]
DEFINE($num_count, -1)
IF(($num_count = -1)|($num_count = 25))
   $num_count = 0
   UNDEFINE($arr_num)
   FOR($a=0,$a<25)
      ARRPUSH($arr_num, 1)
   END_CYC
END_IF

GETSCREEN
FOR($a=1,$a<26)
   IF($arr_num[$a-1] ! 0)
      IF_PICTURE_IN (0,0, $_xmax,$_ymax, STRCONCAT("Вопрос_", $a, ".bmp"), -1, 100)
         IF_PICTURE_IN (0,0, $_xmax,$_ymax, STRCONCAT("Ответ_", $a, ".bmp"), -1, 100)
            LCLICK($_return1, $_return2)
            $arr_num[$a-1] = 0
            INC($num_count,1)
            WAITMS(100)
         END_IF
      END_IF
   END_IF
END_CYC

WAIT(1)