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

0 Members and 2 Guests are viewing this topic.

Skazka

  • Зашел в гости
  • *
  • Posts: 7
    • View Profile
Сократить бы код
« on: October 28, 2016, 05:23:43 PM »
Добрый день!
Вот читаю ваши коды пользуюсь переделывал под свои нужды, но появилась потребность искать в небольшом кусочке экрана определенную картинку, но вариаций картинок много штук 25, при наличии каждой должна нажиматься разная клавиша, по сути код выглядит примерно так
 Гетскрин, иф пикча ин, функция, иф пикча ин, функция... И т д
Получается очень много строк можно ли как-то сократить? Если требуется показать текущий код скажите, я думал может это может как-то свитч обработать, но не нашол подходящего примера..

i0

  • Оплот сообщества
  • ****
  • Posts: 353
  • CMann 4.13.014 final, ie, presto, win7 x86, x64
    • View Profile
Re: Сократить бы код
« Reply #1 on: October 28, 2016, 06:32:40 PM »
если в иф_пикча_ин не был использован % совпадений, можно получать контрольную сумму твоего небольшого кусочка с помощью PXLCRC или PXLXOR и потом SWITCH по ней


добавка: если в иф_пикча_ин игнорируемый цвет - тоже не выйдет
« Last Edit: October 28, 2016, 06:36:54 PM by i0 »

Золотой

  • Оплот сообщества
  • ****
  • Posts: 312
    • View Profile
Re: Сократить бы код
« Reply #2 on: October 28, 2016, 06:37:28 PM »
Добрый день!
Вот читаю ваши коды пользуюсь переделывал под свои нужды, но появилась потребность искать в небольшом кусочке экрана определенную картинку, но вариаций картинок много штук 25, при наличии каждой должна нажиматься разная клавиша, по сути код выглядит примерно так
 Гетскрин, иф пикча ин, функция, иф пикча ин, функция... И т д
Получается очень много строк можно ли как-то сократить? Если требуется показать текущий код скажите, я думал может это может как-то свитч обработать, но не нашол подходящего примера..
Ну конечно можно и сократить
примерно так :
Code: (clickermann) [Select]
Гетскрин,
 иф пикча ин,
 функция,
 иф пикча ин,
 функция...
 И т д

Skazka

  • Зашел в гости
  • *
  • Posts: 7
    • View Profile
Re: Сократить бы код
« Reply #3 on: October 28, 2016, 07:20:20 PM »
Золотой
Я не понял это типа тролинг?

iO
вот примерно мой код там после пикчи нажимаются цифры от 1 до 5 в зависимости от картинки, подойдет чтобы както сократить я просто его еще не доделал) но то что есть точно работает)

# GETSCREEN
         IF_PICTURE_IN ( 2408, 811, 2440, 829, "hammer.bmp", -1, 100)
             keypress(#4)
             waitms(200)
END_IF

              IF_PICTURE_IN ( 2408, 811, 2440, 829, "water.bmp", -1, 100)
             keypress(#3)
             waitms(200)
          END_IF

IF_PICTURE_IN ( 2408, 811, 2440, 829, "blakstone.bmp", -1, 100)
             keypress(#1)
             waitms(200)
          END_IF


IF_PICTURE_IN ( 2408, 811, 2440, 829, "pelt.bmp", -1, 100)
             keypress(#2)
             waitms(200)
          END_IF
          IF_PICTURE_IN ( 2408, 811, 2440, 829, "iron.bmp", -1, 100)
             keypress(#5)
             waitms(200)
END_IF


waitms(100)
keypress(69)
waitms(500)
keypress(82)
waitms(500)
keypress(69)
waitms(500)
keypress(82)
waitms(3500)

Золотой

  • Оплот сообщества
  • ****
  • Posts: 312
    • View Profile
Re: Сократить бы код
« Reply #4 on: October 28, 2016, 07:26:12 PM »
это ответ на доступном  и понятном заказчику языке, вот если я по латински начну писать можете считать троллингом.

Skazka

  • Зашел в гости
  • *
  • Posts: 7
    • View Profile
Re: Сократить бы код
« Reply #5 on: October 28, 2016, 07:30:01 PM »
тоесть он так и будет расти с добавлением остальных картинок? и ничего с этим не сделать?

Золотой

  • Оплот сообщества
  • ****
  • Posts: 312
    • View Profile
Re: Сократить бы код
« Reply #6 on: October 28, 2016, 07:30:54 PM »
Впервые встречается случай когда код ещё не напиасан, а его уже пытаются сокращать.  ;D

Золотой

  • Оплот сообщества
  • ****
  • Posts: 312
    • View Profile
Re: Сократить бы код
« Reply #7 on: October 28, 2016, 07:33:18 PM »
тоесть он так и будет расти с добавлением остальных картинок? и ничего с этим не сделать?
Освойте подпрограммы с параметрами, это самое сильное средство сокращения кода.
может быть и #include  вам чем-то поможет.

Skazka

  • Зашел в гости
  • *
  • Posts: 7
    • View Profile
Re: Сократить бы код
« Reply #8 on: October 28, 2016, 07:36:51 PM »
хорошо спасибо, попробую.

i0

  • Оплот сообщества
  • ****
  • Posts: 353
  • CMann 4.13.014 final, ie, presto, win7 x86, x64
    • View Profile
Re: Сократить бы код
« Reply #9 on: October 28, 2016, 07:52:10 PM »
Code: (clickermann) [Select]
getscreen
$iCRC= pxlcrc(2408, 811, 2440, 829)
switch($iCRC)
case( ___ ) // вписать контрольную сумму для картинки hammer.bmp
    // контрольную сумму для каждого варианта придётся придётся высчитать отдельным скриптом
    keypress(#4)
case( ___ ) // вписать контрольную сумму для water.bmp
    keypress(#3)
case( ___ ) // вписать контрольную сумму для blackstone.bmp
    keypress(#1)
case( ___ ) // вписать контрольную сумму для pelt.bmp
    keypress(#2)
case( ___ ) // вписать контрольную сумму для iron.bmp
    keypress(#5)
default
    print("хьюстон, у меня проблема: в иллюминаторе какая-то неизвестная картинка! хьюстон, я не знаю что жать!!! :(")
end_switch
waitms(200)

i0

  • Оплот сообщества
  • ****
  • Posts: 353
  • CMann 4.13.014 final, ie, presto, win7 x86, x64
    • View Profile
Re: Сократить бы код
« Reply #10 on: October 28, 2016, 08:02:23 PM »
можно и ещё короче в коде.

хранить пары контр.сумма1, код_клавиши1 в одном файле
считывать в массив в начале скрипта
и вместо свича проводить поиск контр.суммы по массиву. п'нятненько?

Skazka

  • Зашел в гости
  • *
  • Posts: 7
    • View Profile
Re: Сократить бы код
« Reply #11 on: October 28, 2016, 08:03:47 PM »
ох вау круто 2 вопроса, как получить контрольную сумму? ну это не самый важный вопрос, думаю нагуглю)
главный вопрос если картинок на цифру 5 несколько типа hammer, mallet, file, это можно както запилить в  вашу штуку?)

Золотой

  • Оплот сообщества
  • ****
  • Posts: 312
    • View Profile
Re: Сократить бы код
« Reply #12 on: October 28, 2016, 08:06:07 PM »
Code: (clickermann) [Select]
getscreen
$iCRC= pxlcrc(2408, 811, 2440, 829)
switch($iCRC)
case( ___ ) // вписать контрольную сумму для картинки hammer.bmp
    // контрольную сумму для каждого варианта придётся придётся высчитать отдельным скриптом
    keypress(#4)
case( ___ ) // вписать контрольную сумму для water.bmp
    keypress(#3)
case( ___ ) // вписать контрольную сумму для blackstone.bmp
    keypress(#1)
case( ___ ) // вписать контрольную сумму для pelt.bmp
    keypress(#2)
case( ___ ) // вписать контрольную сумму для iron.bmp
    keypress(#5)
default
    print("хьюстон, у меня проблема: в иллюминаторе какая-то неизвестная картинка! хьюстон, я не знаю что жать!!! :(")
end_switch
waitms(200)
хьюстон - i0. Не надо ничего жать, в таких случаях нужно сохранять контрольную сумму в логе и  скрин сектора, для последующего разбора на наличие ошибок и модификации скрипта.

Золотой

  • Оплот сообщества
  • ****
  • Posts: 312
    • View Profile
Re: Сократить бы код
« Reply #13 on: October 28, 2016, 08:08:59 PM »
ох вау круто 2 вопроса, как получить контрольную сумму? ну это не самый важный вопрос, думаю нагуглю)
главный вопрос если картинок на цифру 5 несколько типа hammer, mallet, file, это можно както запилить в  вашу штуку?)
первый вопрос порадовал!  ;D
если картинок на цифру 5 несколько, то все их контрольные суммы записываются в switch($iCRC) своими строками и у всех будет  keypress(#5)

Золотой

  • Оплот сообщества
  • ****
  • Posts: 312
    • View Profile
Re: Сократить бы код
« Reply #14 on: October 28, 2016, 08:13:39 PM »
одно только плохо, будет отличаться хоть один пиксель и контрольная сумма не совпадёт, а играя процентом совпадения можно находить картинки даже там где их нет!  ;D