Автор Тема: Поиск части картинки на экране.  (Прочитано 1583 раз)

0 Пользователей и 1 Гость просматривают эту тему.

putman

  • Активный участник
  • ***
  • Сообщений: 180
    • Просмотр профиля
Поиск части картинки на экране.
« : Ноябрь 27, 2016, 10:28:46 am »
Здравствуйте.

В игре есть карта, малая часть которой отображается в соответствующей области экрана.
Мне нужно понимать в каких координатах я нахожусь.
Т.е. стандартными методами я делаю 100500 скринов кусочков отображаемой в данный момент карты и производя среди них поиск на соответствие с тем, что сейчас на экране, вычисляю местоположение.
Т.к. карта немаленькая, таких скринов получится очень много. Я хочу склеить из отображаемых кусочков единое поле которое и запишу допустим в map.bmp.
Будет всего один файл, и уже внутри него я бы хотел указывать сектор (координаты левого верхнего угла, координаты правого нижнего угла) и с этим извлечённым кусочком сравнивать то, что в данный момент на дисплее.
Согласитесь, это намного проще, чем иметь сотни отдельных кусочков *.bmp.

Внимание, вопрос: такое реально средствами Кликермана ?

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Сообщений: 3658
  • Котэ
    • Просмотр профиля
Re: Поиск части картинки на экране.
« Ответ #1 : Ноябрь 27, 2016, 10:52:03 am »
Конечно же нет.

Кстати в место картинок ты можешь снимать хеш. Если конечно графика не меняется.

Вот набросал на вскидку
Скрипт для создания базы данных:
Код: Clickermann
  1. GETSCREEN
  2. $hash = PXLCRC(10,10, 100,100) // область снятия хеша
  3.  
  4. $inp = INPUTBOX("Введите инфу", "", 999)
  5. IF($inp = "")
  6.   HALT
  7. END_IF
  8. $str = STRCONCAT($hash, "|", $inp) // строка (Хеш, разделитель |, Координата)
  9.  
  10. $check = 0
  11. FOR($a=1,$a<TFCOUNT("Hash.txt")+1) // проверка на дубликаты
  12.   IF(STRPOS(TFREAD("Hash.txt", $a), $hash) > 0)
  13.      $check = 1
  14.   END_IF
  15. END_CYC
  16.  
  17. IF($check = 0)
  18.   TFWRITE("Hash.txt", $str) // запись хеша в базу данных
  19. END_IF
  20.  
  21. HALT

Скрипт идентификации:
Код: Clickermann
  1. GETSCREEN
  2. $hash = PXLCRC(10,10, 100,100) // область снятия хеша
  3.  
  4. $count_Hash = TFCOUNT("Hash.txt")+1
  5. FOR($a=1,$a<$count_Hash)
  6.   STRSEPARATE(TFREAD("Hash.txt", $a), "|", $arr)
  7.   IF($hash = $arr[0])
  8.      // Если верно
  9.      $a=$count_Hash // прерываем цикл
  10.      LOGWRITE ("Найден хеш: ", $arr[0], " В: ", $arr[1]) // вывод инфы в лог
  11.   END_IF
  12.   UNDEFINE($arr)
  13. END_CYC
  14.  
  15. HALT
« Последнее редактирование: Ноябрь 27, 2016, 11:22:17 am от Oraven »

Золотой

  • Оплот сообщества
  • ****
  • Сообщений: 312
    • Просмотр профиля
Re: Поиск части картинки на экране.
« Ответ #2 : Ноябрь 27, 2016, 11:09:28 am »
Кто-то здесь уже клеил карту и насколько мне помнится успешно.
Но зачем идти таким сложным путём, вся графическая игровая информация обычно хранится в браузере или игровом клиенте, взять от туда готовую карту проще чем клеить самоделку.

putman

  • Активный участник
  • ***
  • Сообщений: 180
    • Просмотр профиля
Re: Поиск части картинки на экране.
« Ответ #3 : Ноябрь 27, 2016, 11:10:46 am »
Кстати в место картинок ты можешь снимать хеш.

Спасибо.
А почему хеш, а не картинка ? Быстрее что ли ?
Мне картинки понятнее.
---
UPD: вник, да, хешем лучше.
Спасибо за идею.
« Последнее редактирование: Ноябрь 27, 2016, 11:22:58 am от putman »

putman

  • Активный участник
  • ***
  • Сообщений: 180
    • Просмотр профиля
Re: Поиск части картинки на экране.
« Ответ #4 : Ноябрь 27, 2016, 11:22:00 am »
Кто-то здесь уже клеил карту и насколько мне помнится успешно.
Но зачем идти таким сложным путём, вся графическая игровая информация обычно хранится в браузере или игровом клиенте, взять от туда готовую карту проще чем клеить самоделку.
С хешем сделаю, вроде устраивает.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Сообщений: 3658
  • Котэ
    • Просмотр профиля
Re: Поиск части картинки на экране.
« Ответ #5 : Ноябрь 27, 2016, 11:25:09 am »
Ну хотя бы потому что тебе не придется клепать картинки. Кроме того область хеша может быть большой, хоть весь экран, с картинками такое не прокатит. Ну и конечно быстрее.

Чуток дополнил первый скрипт. Вставил инпутбокс для удобства.

Золотой

  • Оплот сообщества
  • ****
  • Сообщений: 312
    • Просмотр профиля
Re: Поиск части картинки на экране.
« Ответ #6 : Ноябрь 27, 2016, 11:27:35 am »
вот например  сейчас взял из памяти браузера двумерное игровое поле размеры 4000: 3600 , по факту на экране отображается малая часть остальное в игре доступно после перетаскиваний.  Весит более 1мб поэтому картинка здесь не принимается. :-[
Ничего ты хешем не сделаешь. ибо не для карт это предназначено. 8)

Золотой

  • Оплот сообщества
  • ****
  • Сообщений: 312
    • Просмотр профиля
Re: Поиск части картинки на экране.
« Ответ #7 : Ноябрь 27, 2016, 11:30:17 am »
ключевая фраза ...Если конечно графика не меняется.
любой сдвиг игрового поля хоть на пиксель, любая пробегающая зверюшка на которые ты не обращаешь в игре ни какого внимания, любая анимация и до свидания любимый хеш - здравствуй вторая смена!
« Последнее редактирование: Ноябрь 27, 2016, 11:34:27 am от Золотой »

putman

  • Активный участник
  • ***
  • Сообщений: 180
    • Просмотр профиля
Re: Поиск части картинки на экране.
« Ответ #8 : Ноябрь 27, 2016, 02:03:25 pm »
Чуток дополнил первый скрипт. Вставил инпутбокс для удобства.
Cпасибо, инпут как раз пригодился, обзывать клетки карты.

putman

  • Активный участник
  • ***
  • Сообщений: 180
    • Просмотр профиля
Re: Поиск части картинки на экране.
« Ответ #9 : Ноябрь 27, 2016, 02:04:36 pm »
ключевая фраза ...Если конечно графика не меняется.
любой сдвиг игрового поля хоть на пиксель, любая пробегающая зверюшка на которые ты не обращаешь в игре ни какого внимания, любая анимация и до свидания любимый хеш - здравствуй вторая смена!
У меня только карта, посторонних спрайтов нет.

putman

  • Активный участник
  • ***
  • Сообщений: 180
    • Просмотр профиля
Re: Поиск части картинки на экране.
« Ответ #10 : Ноябрь 27, 2016, 02:29:00 pm »
Oraven, как автоматически установить фокус на окно инпута ?
---
Сам нашел, Вы мне уже подсказывали ранее.
« Последнее редактирование: Ноябрь 27, 2016, 02:32:42 pm от putman »

putman

  • Активный участник
  • ***
  • Сообщений: 180
    • Просмотр профиля
Re: Поиск части картинки на экране.
« Ответ #11 : Декабрь 16, 2016, 11:14:56 am »
Здравствуйте.
Тут понадобилось сравнивать ХЕШ с маской.
Т.е. в центре прямоугольной области есть еще прямоугольник, хеш в котором нужно игнорировать.
Существует такое или нужно составлять картину из нескольких прямоугольников хеша, таким образом не затрагивая центральной части ?

Vint

  • Супермодератор
  • Герой форума
  • *
  • Сообщений: 3405
  • Лечу куда хочу. cman 4.13.014x32, W10, W7
    • Просмотр профиля
Re: Поиск части картинки на экране.
« Ответ #12 : Декабрь 16, 2016, 02:07:30 pm »
Тут понадобилось сравнивать ХЕШ с маской.
Т.е. в центре прямоугольной области есть еще прямоугольник, хеш в котором нужно игнорировать.
Существует такое или нужно составлять картину из нескольких прямоугольников хеша, таким образом не затрагивая центральной части ?
Такого нет.
Нужно делить на области. Брать 4 прямоугольника "вокруг" и для каждой считать хэш.