Author Topic: помогите облегчить код  (Read 4276 times)

0 Members and 1 Guest are viewing this topic.

abbatlus

  • Зашел в гости
  • *
  • Posts: 2
    • View Profile
помогите облегчить код
« on: January 30, 2017, 11:21:49 AM »
Короч код для игры Небеса
поиск и бой с нужным монстром
 собственно код работает но... очень долго
Просьба людей понимающих помочь поставить правильно условие что бы не запускать весь код
Итак алгоритм такой:
1. клик на новый остров
2. сканирование нужного монстра
Code: (clickermann) [Select]
LCLICK(970,393)  // новый остров
wait(3)

GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "джига.bmp", -1, 100)
   LCLICK($_return1, $_return2)
   WAITMS(100)
END_IF

GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "тузик.bmp", -1, 100)
   LCLICK($_return1, $_return2)
   WAITMS(100)
END_IF

GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "кура.bmp", -1, 100)
   LCLICK($_return1, $_return2)
   WAITMS(100)
END_IF
Если монстры не найдены тогда на круг(заново) если найдены то включаем следующий код
Code: (clickermann) [Select]
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "кнопка напасть.bmp", -1, 100)
   LCLICK($_return1, $_return2)
   WAIT(1)
END_IF

GETSCREEN
IF_PICTURE_IN (373,606, $_xmax,$_ymax, "ZIP.bmp", -1, 100)
   LCLICK($_return1, $_return2)
   WAIT(2)
end_if

move(595,468)  // 1798000
wait(5)

GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "стрелка.bmp", -1, 100)
   LCLICK($_return1, $_return2)
   WAITMS(100)
END_IF


GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "забрать.bmp", -1, 100)
   LCLICK($_return1, $_return2)
   WAIT(8)
END_IF

GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "верн.bmp", -1, 100)
   LCLICK($_return1, $_return2)
   WAITMS(100)
END_IF

GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "кнопка выйти.bmp", -1, 100)
   LCLICK($_return1, $_return2)
   WAIT(5)
END_IF
жду вашей помощи коморады

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: помогите облегчить код
« Reply #1 on: January 30, 2017, 11:47:00 AM »
По размеру
[spoiler]
Code: (clickermann) [Select]
SUB(attack) //=========================================================
    GETSCREEN
    IF_PICTURE_IN (0,0, $_xmax,$_ymax, "кнопка напасть.bmp")
        LCLICK($_return1, $_return2)
        WAIT(1)
    END_IF
   
    GETSCREEN
    IF_PICTURE_IN (373,606, $_xmax,$_ymax, "ZIP.bmp")
        LCLICK($_return1, $_return2)
        WAIT(2)
    end_if
   
    move(595,468)  // 1798000
    wait(5)
   
    GETSCREEN
    IF_PICTURE_IN (0,0, $_xmax,$_ymax, "стрелка.bmp")
        LCLICK($_return1, $_return2)
        WAITMS(100)
    END_IF
   
   
    GETSCREEN
    IF_PICTURE_IN (0,0, $_xmax,$_ymax, "забрать.bmp")
        LCLICK($_return1, $_return2)
        WAIT(8)
    END_IF
   
    GETSCREEN
    IF_PICTURE_IN (0,0, $_xmax,$_ymax, "верн.bmp")
        LCLICK($_return1, $_return2)
        WAITMS(100)
    END_IF
   
    GETSCREEN
    IF_PICTURE_IN (0,0, $_xmax,$_ymax, "кнопка выйти.bmp")
        LCLICK($_return1, $_return2)
        WAIT(5)
    END_IF
END_SUB

SUB(monstr, $name_m) //=========================================================
    IF_PICTURE_IN (0,0, $_xmax,$_ymax, $name_m)
        LCLICK($_return1, $_return2)
        WAITMS(100)
        attack()
        GETSCREEN
    END_IF
END_SUB

//==============================================================================


LCLICK(970,393)  // новый остров
wait(3)

GETSCREEN
monstr("джига.bmp")
monstr("тузик.bmp")
monstr("кура.bmp")
[/spoiler]

А по скорости работы... Сейчас в коде боя только чистых задержек на 21.2 сек, + ещё время выполнения кода.
Нужно строить скрипт не просто на паузах, а на анализе результатов или анализе доступности действий. Не тупо, череда GETSCREEN - IF_PICTURE_IN.

Конкретней можно подсказать только зная, что точно нужно делать.
Например, вместо 5 секундного ожидания
Code: (clickermann) [Select]
   wait(5)
    GETSCREEN
    IF_PICTURE_IN (0,0, $_xmax,$_ymax, "стрелка.bmp")
        LCLICK($_return1, $_return2)
        WAITMS(100)
    END_IF

использовать шаблон "ожидание картинки
Code: (clickermann) [Select]
WAITMS(100)   
$check = 0
WHILE($check = 0)
    GETSCREEN
    IF_PICTURE_IN(0,0, $_xmax,$_ymax, "трелка.bmp")
        $check = 1
        LCLICK($_return1, $_return2)
        WAITMS(100)
    ELSE
        WAITMS(50)
    END_IF
END_CYC

Получается не ждём полные 5 сек для уверенного появления чего нужно, а ищем каждые 50-100 мс. Как только найдёт, выполнится действие сразу.

Ну и так везде. Что нужно обязательно дождаться -  ждать. Если картинка может появится, а может нет - здесь тоже ожидание, но с ограничением по времени. Время подобрать в разумных пределах.

Ну конечно же везде, где можно указать область поиска. А то сейчас весь экран (0,0, $_xmax,$_ymax) слишком расточительно.
« Last Edit: January 30, 2017, 11:53:05 AM by Vint »


Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: помогите облегчить код
« Reply #2 on: January 30, 2017, 01:48:52 PM »
Я не стал "утрамбовывать" саму атаку, т.к. код там скорее всего нужно переделывать. В таком виде он у него и будет долго работать.
Пусть решит что там на лету можно искать, что ждать, а что проверять n секунд вдруг появилось. Потом уже трамбовать.


abbatlus

  • Зашел в гости
  • *
  • Posts: 2
    • View Profile
Re: помогите облегчить код
« Reply #3 on: January 30, 2017, 02:31:58 PM »
парни спс за ваши старания но... не много не то мне не надо сокращать атаку по времени меня все устраивает проблема в поиске. я хотел что бы он передвигался от острова к острову в поисках монстра минуя атаку пока не найдет нужного монстра... поэтому если можно просто связать условием два моих кода. алгоритм: если монстр найден включаем атаку если нет идем дальше сокращать не надо (не было бы класно но все ваши варианты не робят... сори

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: помогите облегчить код
« Reply #4 on: January 30, 2017, 06:20:18 PM »
... проблема в поиске. я хотел что бы он передвигался от острова к острову в поисках монстра минуя атаку пока не найдет нужного монстра...
.. но все ваши варианты не робят... сори


Прям все не робят? А это?
Ну конечно же везде, где можно указать область поиска. А то сейчас весь экран (0,0, $_xmax,$_ymax) слишком расточительно.
Самый прямой путь к ускорению. Задать область для GETSCREEN и поиска.

И мой же вариант под спойлером из ответа #1, где не выполняются ненужные GETSCREEN.


У тебя случайно заготовки не 400х300?


Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: помогите облегчить код
« Reply #5 on: January 30, 2017, 06:31:09 PM »
И туда же описанное ожидание 3 сек. Что не так?

Кликнул "новый остров" и ждёшь(ищешь) по характерным признакам прогрузки и появления монстра.
Проверяешь своих нужных.


CarpeDiem

  • Зашел в гости
  • *
  • Posts: 14
    • View Profile
Re: помогите облегчить код
« Reply #6 on: February 01, 2017, 01:26:35 PM »
Это браузерная флеш игра к которой можно сделать привязку. Область сканирования уменьшиться значительно. Кнопка следующего острова и местонахождение мобов находятся на одном месте, так что достаточно кликать просто по координатам

CarpeDiem

  • Зашел в гости
  • *
  • Posts: 14
    • View Profile
Re: помогите облегчить код
« Reply #7 on: February 01, 2017, 09:25:00 PM »
Это браузерная флеш игра к которой можно сделать привязку. Область сканирования уменьшиться значительно. Кнопка следующего острова и местонахождение мобов находятся на одном месте, так что достаточно кликать просто по координатам
Поздравляю с получением очередного звания - КАПИТАН ОЧЕВИДНОСТЬ! ;D

А можно процедуре SUB(клик) использовать переменные не  $par7,8,9  а $par1,2,3 ?

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: помогите облегчить код
« Reply #8 on: February 01, 2017, 09:32:04 PM »
А можно процедуре SUB(клик) использовать переменные не  $par7,8,9  а $par1,2,3 ?

Нет, так как это собъет данные в подпрограмме attack.

admix

  • Зашел в гости
  • *
  • Posts: 1
    • View Profile
Re: помогите облегчить код
« Reply #9 on: March 11, 2018, 07:48:02 PM »
Здравствуйте....У вас в скрипте сперва осуществляется клик на остров, а потом поиск моба....как сделать наоборот...сперва поиск а потом клик на новый остров...заранее спасибо...