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

> Сценарий поиска нескольких ресурсов, С интерфейсом
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Отправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
 
Ответить в эту темуОткрыть новую тему
Ответов
xolost
сообщение 24.6.2012, 1:58
Сообщение #2


******

Expert
Сообщений: 517
Регистрация: 17.6.2012
Группа: Пользователи
Наличность: 0
Пользователь №: 15.035



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

Сообщений в этой теме
zavas   Сценарий поиска нескольких ресурсов   17.3.2012, 17:01
Cooll   set $path D:\images\ set ...   4.6.2012, 14:12
WKnight   RE: Сценарий поиска нескольких ресурсов   4.6.2012, 16:01
zavas   set $resource 494 Следующий за этой строкой ц...   4.6.2012, 16:07
WKnight   "сколько видов денег" или "типов...   4.6.2012, 18:01
zavas   а в чём разница между видом и типом?   4.6.2012, 18:20
Cooll   // Сценарий поиска изображений в заданной области ...   6.6.2012, 16:27
WKnight   проверьте букву диска в забитом в скрипте пути, та...   6.6.2012, 17:08
Cooll   теперь уже вроде нет ошибки , но останавливаетса с...   6.6.2012, 17:28
zavas   Что значит останавливается? Открой панель Параметр...   6.6.2012, 18:18
Cooll   http://SSMaker.ru/c20879fd/ вот которое значение м...   6.6.2012, 19:50
Cooll   не могу вывестизначение которое скрипт сканировал ...   7.6.2012, 12:08
Cooll   Все сделал , всем спасибо за помощь   7.6.2012, 12:41
Zeleax   Все сделал , всем спасибо за помощь а почему не р...   7.6.2012, 12:43
Cooll   у меня сдесь for #step 0 9 было не 0 9 , а 0 1   7.6.2012, 13:00
zavas   Если не сложно - уберите код под спойлер. Я вчера ...   7.6.2012, 17:43
Cooll   Вот у меня проблема , ищет числа через раз . Обрез...   7.6.2012, 21:52
zavas   А какая винда? Стоит сглаживание шрифтов? Процент ...   8.6.2012, 1:06
Cooll   А какая винда? Стоит сглаживание шрифтов? Процент...   8.6.2012, 9:12
DarkMaster   http://uopilot.tati.pro/index.php?title=Findimage   8.6.2012, 9:36
Cooll   set $path C:\Users\Евгений\De...   8.6.2012, 9:52
Zeleax   в findcolor вместо type пишите 2, вместо accuracy ...   8.6.2012, 10:02
Cooll   в findcolor вместо type пишите 2, вместо accuracy...   8.6.2012, 10:06
Zeleax   Стоп. Просто в вашей записи уберите эти слова, а в...   8.6.2012, 10:09
Cooll   set $path C:\Users\Евгений\De...   8.6.2012, 10:12
Zeleax   Смотрите, в UOWiki указан следующий синтаксис: set...   8.6.2012, 10:12
Cooll   а deviation указывать в процентах ? set $pa...   8.6.2012, 10:22
Zeleax   Будьте внимательнее. Смотрите что вы написали: а ...   8.6.2012, 10:24
Cooll   Вроде пока ищет   8.6.2012, 10:32
Cooll   теперь ищет нормально , но есть проблема , если 2 ...   8.6.2012, 17:18
zavas   Вот это уже странно. Сценарий был тестирован на на...   9.6.2012, 1:28
Cooll   оно находит через раз , бывает нормально находит о...   9.6.2012, 9:53
DarkMaster   скорее всего просто сама цифра не находится. Т.е. ...   9.6.2012, 10:30
Cooll   скорее всего просто сама цифра не находится. Т.е....   9.6.2012, 12:18
zavas   Собственно сам сценарий https://forum.uokit.com/in...   9.6.2012, 11:04
Cooll   Ну так в чем у меня проблема ?   10.6.2012, 19:30
DarkMaster   Собственно ничего шибко не изменилось... Скорее вс...   10.6.2012, 21:04
EL-GReeN   Как вариант искажение в картинках цифр при работе ...   10.6.2012, 23:57
DarkMaster   Кстати сделайте обязательно скрин числа, которое н...   11.6.2012, 8:53
Zeleax   Кстати, можно было усовершенствовать скрипт: - для...   11.6.2012, 9:22
Cooll   заливаю на залил , так как фотохостинги искажают с...   13.6.2012, 10:00
EL-GReeN   заливаю на залил , так как фотохостинги искажают ...   13.6.2012, 11:51
Cooll   Настраивал финимедж минут 20 , и все получилось , ...   13.6.2012, 11:05
DarkMaster   Что изменил то напиши. Нам интересно, кому-то помо...   13.6.2012, 11:10
Cooll   изменил только в финдимедж процент совпадения , и ...   13.6.2012, 11:33
Cooll   Сглаживание присутствует , без него рвет глаза ког...   13.6.2012, 15:13
DarkMaster   Можно. Именно так, как вы и поступили. Снизить то...   13.6.2012, 15:25
xolost   Здасте, порекомендовали сюда пойти. Потому здесь з...   18.6.2012, 1:36
Zeleax   для каждой цифры нужна всего лишь 1 картинка (если...   18.6.2012, 6:58
zavas   Данный сценарий работает на основе оператора findI...   19.6.2012, 10:48
xolost   Прошу прощения за задержку. http://s2.hostingkarti...   19.6.2012, 12:27
Zeleax   Нет же! Имеется в виду, что цифры (одни и теже...   19.6.2012, 12:31
xolost   да это ясен красен одинаково... я же писал выше ...   19.6.2012, 12:34
Zeleax   ну а в в чем тогда вопрос? сделайте отдельную проц...   19.6.2012, 12:38
zavas   Zeleax правильно говорит. Если хочешь для каждого ...   19.6.2012, 12:46
xolost   ))) Эх... беда в том, что я пока не представляю ч...   19.6.2012, 12:53
Zeleax   1) Открываем тему Полезные советы и смотрим кучу п...   19.6.2012, 12:56
xolost   1) Открываем тему Полезные советы и смотрим кучу ...   19.6.2012, 13:00
xolost   Я понимаю, что очень легко вам сказать - да ты че,...   19.6.2012, 13:12
EL-GReeN   Я понимаю, что очень легко вам сказать - да ты че...   19.6.2012, 16:29
DarkMaster   У нас в этом плане народ вредный =) Мы будем до по...   19.6.2012, 13:44
WKnight   мне достаточно хорошо известно, насколько сложны д...   19.6.2012, 13:59
xolost   Зачем тратить время на ловлю рыбы, если можно науч...   20.6.2012, 2:33
EL-GReeN   set $a findimage ($startX $startY ...   20.6.2012, 7:09
Zeleax   Пилот может работает со строковыми переменными (...   20.6.2012, 7:04
xolost   Ага, спасибо. Доброе утро. Ну что же. Сами просил...   20.6.2012, 14:31
Zeleax   а если после строки findimage вставить строку msg...   20.6.2012, 14:36
xolost   ох... тьфу...так.. понял косяк.. конечно же.. пото...   20.6.2012, 14:39
Zeleax   на вопрос не ответили   20.6.2012, 14:43
xolost   ну там было: a = findimage (840 417 846 425 (C:...   20.6.2012, 14:47
Zeleax   Окошко появляется: a = ляляля ?   20.6.2012, 14:54
DarkMaster   Не сделана обработка, если картинка не была найден...   20.6.2012, 14:55
xolost   Окошко появляется: a = ляляля ? Сначала a = лял...   20.6.2012, 15:03
EL-GReeN   Ищет 1 раз в момент запуска: set #startX 840 set #...   20.6.2012, 15:29
xolost   2 green и в первом и во втором случаях ошибка в ст...   20.6.2012, 16:02
DarkMaster   В первом случае не объявлена переменная set ...   20.6.2012, 17:10
EL-GReeN   А разве это не объявление $a? по идее туда в ...   20.6.2012, 17:41
xolost   В первом случае не объявлена переменная set ...   20.6.2012, 17:41
EL-GReeN   Конечно пилот старый вот и орет на новые функции)   20.6.2012, 17:46
xolost   ёлки-маталки... понял... буду реинстал делать)) но...   20.6.2012, 17:48
DarkMaster   Какой нафиг инстал? О.о там просто ехе файл...   20.6.2012, 20:42
xolost   Какой нафиг инстал? О.о там просто ехе файл... Д...   23.6.2012, 22:43
DarkMaster   Ну для начала бы неплохо вывести, что содержится в...   23.6.2012, 22:58
xolost   там пустое окно выскакивает... Я вот думаю, может...   23.6.2012, 23:02
DarkMaster   вполне возможно. вы кстати все так же не делаете к...   24.6.2012, 1:31
DarkMaster   Кстати лучше испоьзовать строковую переменную ...   24.6.2012, 4:00
xolost   Я извиняюсь. Крыша маленько едет... запутался и п...   25.6.2012, 3:42
xolost   Так. Во-первых, всем спасибо огромнейшее, и отдель...   26.6.2012, 17:23
zavas   отдельное преспасибо - Завасу за хорошую тему и ...   26.6.2012, 21:18
xolost   Добрый день снова. И вот интересный косякс вылез) ...   29.6.2012, 11:52
DarkMaster   Это сглаживание, на ХР оно у вас отключено. На ви...   29.6.2012, 12:20
zavas   Это сглаживание, на ХР оно у вас отключено. На ви...   29.6.2012, 13:43
DarkMaster   Если в системе используется сглаживание шрифтов, т...   29.6.2012, 21:11
zavas   Для себя решил это отключением сглаживания в win7....   29.6.2012, 23:36
DarkMaster   Ну смотря какой моник. Я сидя за 42 дюймовой дурой...   30.6.2012, 11:47
xolost   нет нет нет. Извините... но.. при чем тут сглажива...   30.6.2012, 15:54
Zeleax   дайте ссылки на ваши 3 и 8   30.6.2012, 16:01
xolost   Восьмерка: http://s2.hostingkartinok.com/uploads/i...   30.6.2012, 16:28
Zeleax   да, надо поменять порядок проверки цифр - проверят...   30.6.2012, 16:30
2 страниц V  1 2 >


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

 

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