Author Topic: Сократить бы код  (Read 3620 times)

0 Members and 1 Guest are viewing this topic.

i0

  • Оплот сообщества
  • ****
  • Posts: 353
  • CMann 4.13.014 final, ie, presto, win7 x86, x64
    • View Profile
Re: Сократить бы код
« Reply #15 on: October 28, 2016, 09:31:51 PM »
как получить контрольную сумму?
лучше не гуглить, а открыть справку и найти там PXLCRC
главный вопрос если картинок на цифру 5 несколько типа hammer, mallet, file, это можно както запилить в  вашу штуку?)
эт не моя штука, это просто switch
т.е. нескольким картинкам соответствует одна клавиша? в CASE нельзя прописывать сложные условия, только одно явно указанное значение. значит в случае совпадения клавиши придётся дублировать.

и как верно сказано:
Quote from: Золотой
одно только плохо, будет отличаться хоть один пиксель и контрольная сумма не совпадёт
может, ну его, сокращение это? ;)
во, Оравен спас. и кратко, и гибко
« Last Edit: October 28, 2016, 09:37:01 PM by i0 »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Сократить бы код
« Reply #16 on: October 28, 2016, 09:32:49 PM »
Тебе нужно написать подпрограмму с параметрами

Code: (clickermann) [Select]
SUB(scan, $key, $pic) // подпрограмма в верхней части скрипта
   IF_PICTURE_IN (2408,811, 2440,829, $pic, -1, 100)
      keypress($key)
      waitms(200)
   END_IF
END_SUB

GETSCREEN
scan(#4,"hammer.bmp") // вызов подпрограммы с передачей параметров.
scan(#3,"water.bmp")
scan(#1,"blakstone.bmp")
scan(#2,"pelt.bmp")
scan(#3,"iron.bmp")

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Сократить бы код
« Reply #17 on: October 28, 2016, 09:47:09 PM »
Всё делается просто. Один цикл по составному имени, внутри поиск. И реакция либо расписана в свитч либо по массиву.
Примерно 8 строк, если с массивом.
При добавлении картинок, в массив добавляется код кнопки действия и всё.
Я с телефона, поэтому пример писать неудобно. Может и попробую.


Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Сократить бы код
« Reply #18 on: October 28, 2016, 10:08:09 PM »
типа такого, если параметры поисков одинаковые.
Code: (clickermann) [Select]
STRSEPARATE("52,51,50,49,49", ",", $key)

FOR($i=0, $i < ARRSIZE($key))
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, STRCONCAT("image",$i,".bmp"))
      KEYPRESS($key[$i])
      WAITMS(500)     
   END_IF
END_CYC
Имена картинок сделать с инкрементом вида image0.bmp, image1.bmp...


Skazka

  • Зашел в гости
  • *
  • Posts: 7
    • View Profile
Re: Сократить бы код
« Reply #19 on: October 29, 2016, 12:35:56 AM »
ох блин попробую, спасибо парни)
хотя не понял что значит STRSEPARATE, ну может сам найду)


Skazka

  • Зашел в гости
  • *
  • Posts: 7
    • View Profile
Re: Сократить бы код
« Reply #20 on: October 29, 2016, 07:53:07 AM »
во проснулся и понял, Винт, ваш код не учитывает что у меня на  каждой цифре по 5-6 картинок, ведь не получится сделать одинаковое название для картинок) но я так понял вы оперались на то что я выкладывал в начале)
« Last Edit: October 29, 2016, 07:58:57 AM by Skazka »

i0

  • Оплот сообщества
  • ****
  • Posts: 353
  • CMann 4.13.014 final, ie, presto, win7 x86, x64
    • View Profile
Re: Сократить бы код
« Reply #21 on: October 29, 2016, 01:52:33 PM »
ваш код не учитывает что у меня на  каждой цифре по 5-6 картинок
как раз таки учитывает
STRSEPARATE("52,51,50,49,49", ",", $key)
т.е. картинкам image3.bmp и image4.bmp соответствует код клавиши "1" (49, см. коды клавиш в приложении к справке)