1
Общие вопросы / Re: Анализ текста с картинки
« on: July 25, 2014, 11:54:31 AM »Можно написать примерно такой сценарий с использованием функции IF_PICTURE_IN().
[spoiler]Code: (clickermann) [Select]WAITMS(500)
[/spoiler]
LOGCLEAR
$entry = 0 // Количество найденных изображений
//-------------------------------- Предварительное сканирование
GETSCREEN
COLORMODE(8)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Картинка.bmp", -1, 90)
$entry_1_X = $_return1 // Сохраняем координаты для следующих операций
$entry_1_y = $_return2
LOGWRITE ("Первое совпадение найдено")
LOGWRITE( STRCONCAT("x=", $entry_1_X) ) // Вывод в лог информации для отладки
LOGWRITE( STRCONCAT("y=", $entry_1_y) )
LOGWRITE (" ")
INC($entry) // Счетчик найденных изображений увеличивается на единицу
//
// Координата X (горизонтальное смещение) для левого верхнего угла области поиска остается неизменной
// Область поиска становится меньше и смещается вниз на высоту искомого изображения (10 пикселей)
IF_PICTURE_IN ($_return1,$_return2+10, $_xmax,$_ymax, "Картинка.bmp", -1, 90)
$entry_2_X = $_return1
$entry_2_y = $_return2
LOGWRITE ("Второе совпадение найдено")
LOGWRITE( STRCONCAT("x=", $entry_2_X) )
LOGWRITE( STRCONCAT("y=", $entry_2_y) )
LOGWRITE (" ")
INC($entry)
// В этом месте (если достаточно двух совпадений) можно перейти к следующему действию сценария
// и не терять время на поиск третьего совпадения.
// Например оператором GOTO(label) :)
//
IF_PICTURE_IN ($_return1,$_return2+10, $_xmax,$_ymax, "Картинка.bmp", -1, 90)
$entry_3_X = $_return1
$entry_3_y = $_return2
LOGWRITE ("Третье совпадение найдено")
LOGWRITE( STRCONCAT("x=", $entry_3_X) )
LOGWRITE( STRCONCAT("y=", $entry_3_y) )
LOGWRITE (" ")
INC($entry)
ELSE
LOGWRITE ("Третье совпадение не найдено")
END_IF
//
ELSE
LOGWRITE ("Второе совпадение не найдено")
END_IF
//
ELSE
LOGWRITE ("Первое совпадение не найдено")
END_IF
LOGWRITE (" ")
LOGWRITE ("Всего найдено совпадений: ", $entry)
//-------------------------------- Окончательная обработка
SWITCH($entry) // Действия в зависимости от количества найденых изображений
CASE(1)
// случай 1
CASE(2)
// Для примера, здесь может быть код для проверки точности найденных изображений
// ...
// $arr[0] = "0.bmp"
// $arr[1] = "1.bmp"
// $arr[2] = "2.bmp"
// $arr[3] = "3.bmp"
// FOR($i, $i < 4) // Переменная i - Индекс элемента массива
// GETSCREEN
// IF_PICTURE_IN (x,y, x2,y2, $arr[$i])
// // Действие
// END_IF
// END_CYC
// ...
CASE(3)
// случай 3
DEFAULT
// случай по умолчанию
END_SWITCH
HALT
Картинка и скрипт для теста во вложении.
Теперь разберем по порядку
Code: (clickermann) [Select]
CASE(1)
// случай 1
это то,что будет делать кликер если найдет 1 совпадение?
случай 2,это если 2 подряд,и случай по умолчанию это если не найдет верно?
Еще,случай 1 это -6?,случай 2 -12,случай 3 -18 я верно понял?