Здравствуйте, гость ( Вход | Регистрация )

> Сценарий поиска нескольких ресурсов, С интерфейсом
esqado
сообщение 17.3.2012, 17:01
Сообщение #1


*****

Journeyman
Сообщений: 357
Регистрация: 5.11.2011
Группа: Пользователи
Наличность: 0
Пользователь №: 14.217



Сценарий поиска цифр в заданной области для нескольких ресурсов.
(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


Не забываем привязывать до запуска


--------------------
В обычном программировании: любое значение может быть преобразовано в тип string
В программировании Pilot: любое значение должно быть типа имейдж.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Сообщений в этой теме
zavas   Сценарий поиска нескольких ресурсов   17.3.2012, 17:01
Zeleax   в первом посте поменять for #step 0 9 // Поиск...   30.6.2012, 16:44
zavas   в первом посте поменять for #step 0 9 // Поис...   2.7.2012, 9:32
Zeleax   А зачем? а чтоб 8 раньше 3 проверялась. Хотя, к...   2.7.2012, 9:36
zavas   а чтоб 8 раньше 3 проверялась. Не понимаю, как н...   2.7.2012, 10:22
DarkMaster   не работает такая фенечка воде...   30.6.2012, 17:38
Zeleax   не работает такая фенечка воде... замечательно р...   1.7.2012, 19:59
DarkMaster   Потому что однажды мне пришлось это переписывать ...   2.7.2012, 3:48
Zeleax   восьмерка не исключит поиск тройки. Но она будет н...   2.7.2012, 10:24
zavas   Очень интересно... Если мысли, как это должно быть...   2.7.2012, 12:11
Zeleax   Есть. Программа "максимум": использоват...   2.7.2012, 12:18
WKnight   Фон всегда такой как на примере троек\восьмер...   2.7.2012, 15:19
Zeleax   Фон всегда такой как на примере троек\восьме...   2.7.2012, 15:24
zavas   Тогда проще будет сделать поиск каждой цифры   2.7.2012, 15:50
xolost   Привет всем. Извиняюсь за пропажу (сначала не пуск...   11.7.2012, 20:41
Zeleax   фон вокруг цифр всегда один и тот же или разный?   11.7.2012, 20:45
xolost   фон вокруг цифр всегда один и тот же или разный? ...   13.7.2012, 21:23
Zeleax   значит нужно на картинке с 3-кой покрасить левый в...   13.7.2012, 21:27
xolost   не понимаю сути... Вот есть тройка, есть восьмерк...   13.7.2012, 21:39
Zeleax   сначала просто попробуй. Цвет левого верхнего пикс...   13.7.2012, 22:09
xolost   окей, ну чуть позже. Ибо опять нарезать надо всё э...   14.7.2012, 11:29
Zeleax   окей, ну чуть позже. Ибо опять нарезать надо всё ...   14.7.2012, 12:43
xolost   и ничего не надо заново нарезать, просто на готов...   14.7.2012, 14:35
Zeleax   мыслишка такая, что не тот массив чистится   14.7.2012, 11:39
xolost   мыслишка такая, что не тот массив чистится ух ты...   14.7.2012, 11:58
DarkMaster   а вот пробелы внутри скобок раньше приводили к ош...   14.7.2012, 12:37
zavas   В пятницу пробовал на шрифте даты сообщения с фору...   16.7.2012, 15:30
Zeleax   В пятницу пробовал на шрифте даты сообщения с фор...   16.7.2012, 15:35
EL-GReeN   Если в щрифте 8-ка полностью закрывает 3-ку и фон...   16.7.2012, 15:57
Zeleax   Почему - никак? Можно скрипт поиска (этой темы) ул...   16.7.2012, 16:00
xolost   Почему - никак? Можно скрипт поиска (этой темы) у...   9.3.2013, 13:14
serega02   Народ подскажите можно ли сделать скрипт, который ...   25.7.2013, 10:28
Zeleax   Народ подскажите можно ли сделать скрипт, который...   25.7.2013, 19:12
2 страниц V < 1 2


Ответить в эту темуОткрыть новую тему
13 чел. читают эту тему (гостей: 13, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 19.9.2025, 13:50
Designed by Nickostyle