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

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


********

Разработчик UO Pilot'а
Сообщений: 1.639
Регистрация: 9.1.2006
Группа: Пользователи
Наличность: 0
Пользователь №: 4.688



Цитата
но один фиг не очень понял
Цитата
Только, пожалуйста, не надо говорить "ничего не понятно". Приводите кусочки текста которые не ясны,
мне достаточно хорошо известно, насколько сложны для понимания массивы и прочие програмистские навороты, но я соглащусь с предыдущим оратором, лучше научить ловить рыбу.
если конкретно про массивы, есть мелкая ссылка, которая помогла многим. теоретически можно объяснить на другом примере.
если проблема в другом - задавайте конкретные вопросы, здесь с удовольствием ответят.
Пользователь в офлайне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
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
xolost   под проверкой подразумевается вывод меседжа?   24.6.2012, 1:58
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 >


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

 

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