Author Topic: Как сделать.Новичок.  (Read 3276 times)

0 Members and 3 Guests are viewing this topic.

Nikki

  • Зашел в гости
  • *
  • Posts: 2
    • View Profile
Как сделать.Новичок.
« on: December 16, 2016, 09:17:26 PM »
Добрый день!
Задача.Нужно кликнуть по определенной цветной фигуре на экране , название и цвет которой пишется в углу экрана.Выпадает название фигуры рандомно.
Три фигуры , три цвета и название фигур из двух слов ( например -круг синий , может писаться так КРУГ синий, КРУГ СИНИЙ ,круг СИНИЙ , круг синий )Цвет шрифта одинаковый.
С чего начать?

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Как сделать.Новичок.
« Reply #1 on: December 18, 2016, 08:56:11 AM »
Нужно сделать картинки слов СИНИЙ с капсом и без. И так для каждого цвета.
Также нужно определить цвета картинок на экране.

Здесь я написал подпрограмму и вызовы с параметрами. В подпрограмму передается имя картинки и цвет фигурки. Сначала мы ищем картинку слова обозначающего цвет и если нашли то начинаем искать соответствующий цвет фигурки и кликать на неё.
В данном случаи область поиска 0,0, $_xmax,$_ymax обозначает весь экран. Но лучше указать примерное место поиска. Так будет гораздо быстрее искать. Пример 500,500, 600,600

Code: (clickermann) [Select]
SUB(search, $pic, $color)
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, $pic, -1, 100) // поиск слова
      IF_PIXEL_IN(0,0, $_xmax,$_ymax, $color) // поиск цвета фигурки
         LCLICK($_return1, $_return2) // клик по найденной фигурке
         WAITMS(500)
      END_IF
   END_IF
END_SUB

GETSCREEN
search("СИНИЙ.bmp",13856258) // вызов подпрограммы search, первый параметр имя картинки, второй цвет фигуры
search("синий.bmp",13856258)
search("КРАСНЫЙ.bmp",255)
search("красный.bmp",255)
search("ЗЕЛЕНЫЙ.bmp",3914077)
search("зеленый.bmp",3914077)
WAITMS(500)

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Как сделать.Новичок.
« Reply #2 on: December 18, 2016, 05:57:10 PM »
Судя по задаче это вид капчи. Тогда возникает вопрос разрабы же не идиоты, раз даже разным регистром пишут. 100% там может быть не одна фигура этого цвета одновременно. Поэтому поиск только по цвету может не подойти.
Если штрафа нет или он минимальный, то оставить так. А если ошибка смерти подобна, то нужно думать дальше.


Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Как сделать.Новичок.
« Reply #3 on: December 24, 2016, 07:53:51 AM »
Области поиска для слова и фигур нужно написать свои.
Картинки обзави таким образом
СИНИЙ шар.bmp - картинка слова
СИНИЙ шар_2.bmp - картинка фигуры


Картинки нужно сделать максимально маленькими. Для слов хорошо подходит полоска в 2-3 пиксела по ширене слова. Для фигур такое тоже сгодится. Чем меньше в картинке пикселов тем быстрее поиск.
Но если графика меняется то без цветокоррекции и процента совпадения не обойтись.
По логу смотри что находит что нет.

Code: (clickermann) [Select]
SUB(search, $pic)
   IF_PICTURE_IN (500,500, 600,600, STRCONCAT($pic, ".bmp"), -1, 100) // поиск слова
      LOGWRITE ("Нашел ", STRCONCAT($pic, ".bmp"))
      IF_PICTURE_IN (300,300, 500,500, STRCONCAT($pic, "_2.bmp"), -1, 100) // поиск фигуры
         LOGWRITE ("Нашел ", STRCONCAT($pic, "_2.bmp"))
         LCLICK($_return1, $_return2) // клик по найденной фигурке
         WAITMS(500)
      END_IF
   END_IF
END_SUB

GETSCREEN
search("СИНИЙ шар")
search("синий шар")
WAITMS(500)
« Last Edit: December 24, 2016, 08:00:33 AM by Oraven »

Nikki

  • Зашел в гости
  • *
  • Posts: 2
    • View Profile
Re: Как сделать.Новичок.
« Reply #4 on: December 24, 2016, 09:51:13 PM »
Добрый вечер.Если делать картинки слова(синий шар ) с разными сочетаниями регистров ,
то надо сделать 81 картинку т.к. цвет и название фигурки ввыпадают в произвольном сочетании
 по регистрам (по 3 варианта).
Сами фигурки выпадают с разным небольшим наклоном , но у фигурок можно выделить свой цвет пиксель
и кликнуть по нему.Можно ли сделать -поиск картинки ( название цвета ) + поиск картинки ( название фигурки )
 и кликнуть по индивидуальному цвету пикселя характерный для каждой фигурке ?
А чтобы быстрее искал  слова ( синий шар )можно сделать картинку одной первой буквы
 каждого слова ( с ш ).
Всем хороших выходных.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Как сделать.Новичок.
« Reply #5 on: December 26, 2016, 11:04:18 AM »
Слова искать конечно раздельно!
Цвет отдельно разным регистром, фигура - отдельно.

Т.к. Одновременно несколько фигур этого цвета, просто по цвету искать нельзя.
По картинке нельзя совсем. Фигуры повёрнуты на произвольный градус. +На фигуры наложена декаль из произвольных трещин.

Задача делится на 2 части, надпись и поиск фигуры.

Надпись ищем отдельно цвет, отдельно - форму. Образец делать на 1/2-1 длину слова, малой высоты 1-2-3 пиксела.
Надпись на прозрачном фоне! Применить цветокоррекцию 7 уровня. Подобрать % совпадения.

Фигуру ищем при цветокоррекции 7. Определяем клетки с нужным цветом. Для определения фигуры, предлагаю проверять углы, чтобы отличить ромб от квадрата... Или может проще считать количество пикселов по паре цветов основной/чёрный. Последнее наверно лучше.



lanser285

  • Освоившийся
  • **
  • Posts: 60
    • View Profile
Re: Как сделать.Новичок.
« Reply #6 on: December 28, 2016, 02:55:46 AM »
думаю начать нужно с того, что более конкретно поставить условие задачи, а именно:
1.какое кол-во фигур.
2.какое кол-во цветов.
3.как написал автор выше, повернуты ли они или они всегда в одном положении.
4.желателен скрин с примером, так более визуально понятно будет условие задачи.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Как сделать.Новичок.
« Reply #7 on: January 03, 2017, 04:34:46 PM »
Code: (clickermann) [Select]
IF($first = 0) // это условие сработает 1 раз
   $first = 1
   
   // настройка
   // массив имен картинок цветов
   ARRPUSH($arr_color, "F1") // фиолетовый F1.bmp
   ARRPUSH($arr_color, "F2") // ФИОЛЕТОВЫЙ F2.bmp
   ARRPUSH($arr_color, "O1") // другие цвета
   ARRPUSH($arr_color, "O2")
   
   // массив имен картинок форм
   ARRPUSH($arr_form, "CRUG1") // круг CRUG1.bmp
   ARRPUSH($arr_form, "CRUG2") // КРУГ CRUG2.bmp
   ARRPUSH($arr_form, "KVADRAT1") // и тд.
   ARRPUSH($arr_form, "KVADRAT2")
   
END_IF



SUB(scan)
   $color = 0
   $form = 0
   
   GETSCREEN
   FOR($a=0,$a<ARRSIZE($arr_color)) // просчитываем все цвета
      IF_PICTURE_IN (0,0, $_xmax,$_ymax, STRCONCAT($arr_color[$a], ".bmp"), -1, 100)
         $color = STRFILTER($arr_color[$a], "1234567890", 0) // удаляем все цифры из имени
         $a=ARRSIZE($arr_color)
      END_IF
   END_CYC
   
   FOR($a=0,$a<ARRSIZE($arr_form)) // просчитываем все формы
      IF_PICTURE_IN (0,0, $_xmax,$_ymax, STRCONCAT($arr_form[$a], ".bmp"), -1, 100)
         $form = STRFILTER($arr_form[$a], "1234567890", 0)
         $a=ARRSIZE($arr_form)
      END_IF
   END_CYC
   
   IF(($color ! 0)&($form ! 0)) // если оба найдены
      LOGWRITE ("Цвет: ", $color, " Форма: ", $form)
      $pict = STRCONCAT($color, "_", $form) // составляем имя искомой картинки цвет_форма
   ELSE
      LOGWRITE ("Не найдено!")
      LOGWRITE ("Цвет: ", $color, " Форма: ", $form)
      HALT
   END_IF
   
END_SUB

scan() // определение цвета и формы фигуры
LOGWRITE ($pict) // в итоге должно получиться например F_CRUG

HALT

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Как сделать.Новичок.
« Reply #8 on: January 03, 2017, 07:13:24 PM »
Да не катит там поиск по картинке фигуры, зачем под это подстраиваться?
Фигуры все случайно повёрнуты.


Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Как сделать.Новичок.
« Reply #9 on: January 03, 2017, 07:40:16 PM »
Да не катит там поиск по картинке фигуры, зачем под это подстраиваться?
Фигуры все случайно повёрнуты.

Это вообще то анализ текста, фигуры определять будем потом.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Как сделать.Новичок.
« Reply #10 on: January 03, 2017, 07:47:44 PM »
Я понял. Про это и говорю.
Зачем получать имя F_CRUG если оно не будет использоваться?


Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Как сделать.Новичок.
« Reply #11 on: January 03, 2017, 08:25:13 PM »
Я понял. Про это и говорю.
Зачем получать имя F_CRUG если оно не будет использоваться?

Ну вопрос возникает, вот я и выдаю ответ.
https://vk.com/topic-14410794_23383620?post=51769

Конечно про оптимальность и будет от этого толк вообще речи нет.

Откуда эта капча вообще?