Сценарий поиска цифр в заданной области для нескольких ресурсов.
(IMG:http://savepic.su/1613040m.jpg)
(IMG:http://s1.hostingkartinok.com/uploads/thumbs/2012/03/09c8aa718cc98d3a4aa8df8d9235d7be.png)
Координаты, количество, имена картинок и путь к картинкам не обязательно вписывать в код.
При запуске команда prompt запрашивает у пользователя данные для дальнейшей работы.
Будьте аккуратны с вводом данных. При ошибке сценарий работать не будет!Путь к файлам должен заканчиваться знаком "\" (естественно без кавычек).
Сценарий не понимает точки, разделяющие числа.
Внимательно смотрите за картинками чисел. В данном примере из двух четверок находилась только одна.
Смотрите пример, как обрезать цифру, чтобы она определялась
Так же необходимы картинки самих ресурсов (в примере: золото, серебро, медь, бриллиант).
Имена файлов ресурсов рекомендую сохранять на русском языке. В дальнейшем они будут отображаться в конечном результате.
Можно искать не все ресурсы. Например бриллианты используются редко и брать их в расчёт при подсчёте нет необходимости.
Поиск цифр с "интерфейсом"
Код
// Сценарий поиска изображений в заданной области
set $bmp .bmp
// Запрос данных от пользователя
// Команда prompt записывает в переменные данные от пользователя
set $path prompt (Укажите путь к файлам картинок)
set $startX prompt (Начальная координата по оси X)
set $startY prompt (Начальная координата по оси Y)
set $endX prompt (Конечная координата по оси X)
set $endY prompt (Конечная координата по оси Y)
set $resource prompt (Введите колличество ваших ресурсов)
for #c 1 $resource
set $resName prompt (Введите название ресурса /nНазвание должно соответствовать имени фалйа)
set %cash[#c] $resName
end_for
set #h $resource + 1
set %cashCrdsX[1 #h] $endX
//+++++++++++++++++++++++++++++++++++++
// Поиск изображений ресурсов
for #i 1 $resource
set #a findimage ($startX $startY $endX $endY ($path%cash[#i].bmp) %crds 2)
set %cashCrdsX[1 #i] %crds[1 1]
end_for
//+++++++++++++++++++++++++++++++++++++
// Поиск цифр в пределах "ячейки" ресурса
for #w 1 $resource
set #startX %cashCrdsX[1 #w]
set #end #w + 1
set #endX %cashCrdsX[1 #end]
set #s 1
for #step 0 9
// Поиск изображений
// Конечными координатами для области картинок являются стартовые координаты следующего ресурса
set $check findimage (#startX $startY #endX $endY (images\numbers\money\#step$bmp) %crds 2 88 -1)
// Проверка на наличие
if $check > 0
set #size size (%crds)
for #i 1 #size
// Запись в массив %m[#s 1] числа, %m[#s 2]координаты
set %m[#s 2] #step
set %m[#s 1] %crds[#i 1]
set #s #s + 1
end_for
end_if
end_for
gosub sort
end_for
// Собираем в строку все данные массива
for #q 1 #c
set $cash $cash %cash[#q] - %money[#q]
end_for
// Вывод данных
msg У вас $cash
end_script
//=====================================
:sort
// Сортировка массива координат найденных картинок
// Присваиваем переменной размер массива
set #n size (%m)
hint Отдельное спасибо Zeleax за код сортировки массива
// Сортируем массив
for #i 1 #n
set #min %m[#i 1]
set #imin #i
set #ii #i + 1
for #j #ii #n
if %m[#j 1] < #min
set #min %m[#j 1]
set #imin #j
end_if
end_for
// меняем местами минимальный элемент с текущим, используя промежуточную #z
set #z %m[#i 1]
set %m[#i 1] %m[#imin 1]
set %m[#imin 1] #z
set #z %m[#i 2]
set %m[#i 2] %m[#imin 2]
set %m[#imin 2] #z
end_for
// Соберем все элементы в одну текстовую строку
set $s // пустая строка
for #i 1 #n
set $s $s%m[#i 2] //(X= %m[#i 1]) // добавляем каждый элемент в конец строки
// Записываем в массив строку
set %money[#w] $s
end_for
// Обнуляем массив
set $a findcolor ( 1, 1 2, 2 1 1 167772150 %m 1)
return
Не забываем привязывать до запуска