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

 
Ответить в эту темуОткрыть новую тему
> Скрипт для сбора пазлов jigsawplanet.com
FREEON
сообщение 13.8.2019, 12:43
Сообщение #1


****

Apprentice
Сообщений: 249
Регистрация: 14.2.2017
Группа: Пользователи
Наличность: 1049
Пользователь №: 18.346
Возраст: 25



Сбор пазлов jigsawplanet:
Ну сперва обсудим настройки которые необходимо сделать на сайте jigsawplanet:
1) Настройки > Игра устанавливаем галочку напротив Автоматически показывать призрак при старте.
2) Видимость призрака [%] устанавливаем на параметр 100%
3) Цвет фона выбираем такой, что бы четко было видно фрагменты.
Далее для простоты ориентации используя прогу Прикрепленный файл  Custom_Desktop_Logo_V2.1___русский.zip ( 429,73 килобайт ) Кол-во скачиваний: 7
накладываем шаблон поверх экрана(сетку пилот не видит)...пример сетки вот:
Прикрепленное изображение
А дальше используем скрипт для сравнения участки сетки с призраком изображения собираем пазл.
Код

Код

// jigsawplanet полуавтоматизация сбора пазла
// клавиша "S" -- старт/пауза
// клавиша "E" -- выключить скрипт
// клавиша "1" -- установить размер иcкомого фрагмента 15x15
// клавиша "2" -- установить размер иcкомого фрагмента 10x10
// клавиша "3" -- установить размер иcкомого фрагмента 5x5
set linedelay 0                         //Установить задержку между строками в 0 мс
while_not KB.GetKeyStateByCode(83) = 1  // S -- отмашка для старта
    wait 100
end_while
//Искомые фрагменты/установить размер по умолчанию 15x15
//1-й запоминаемый фрагмент
set #startXA 220
set #startYA 295
set #endXA #startXA + 15
set #endYA #startYA + 15
//2-й запоминаемый фрагмент
set #startXB 1100
set #startYB 295
set #endXB #startXB + 15
set #endYB #startYB + 15
while 1 = 1 // бесконечный цикл
    //УПРАВЛЕНИЕ СКРИПТОМ
    if  KB.GetKeyStateByCode(83) = 1  // S - пауза
        wait 1s
        while_not KB.GetKeyStateByCode(83) = 1  // S -- отпустить паузу
            wait 100
        end_while
    end_if
    if  KB.GetKeyStateByCode(69) = 1  // E - выключить скрипт
        end_script
    end_if
    //УПРАВЛЕНИЕ МАСШТАБОМ ИСКОМЫХ ФРАГМЕНТОВ
    if  KB.GetKeyStateByCode(49) = 1  // клавиша 1 -- установить размер иcкомого фрагмента 15x15
        set #endXA #startXA + 15
        set #endYA #startYA + 15
        set #endXB #startXB + 15
        set #endYB #startYB + 15
    end_if
    if  KB.GetKeyStateByCode(50) = 1  // клавиша 2 -- установить размер иcкомого фрагмента 10x10
        set #endXA #startXA + 10
        set #endYA #startYA + 10
        set #endXB #startXB + 10
        set #endYB #startYB + 10
    end_if
    if  KB.GetKeyStateByCode(51) = 1  // клавиша 3 -- установить размер иcкомого фрагмента 5x5
        set #endXA #startXA + 5
        set #endYA #startYA + 5
        set #endXB #startXB + 5
        set #endYB #startYB + 5
    end_if
    //ПОИСК
    set %a GetImage (#startXA #startYA #endXA #endYA  abs) //запомнить 1-й фрагмент пазла в первой области
    set #a findimage ( 333 169 1016 558 (%a [1 1]) %arr 2 99 -1 3 abs )   // искать картинку
    // вместо имени файла указывается адрес в памяти
    // содержащийся в %a [1 1]
    log #a                               // результат поиска
    if  #a > 0                           // если картинка найдена
        kleft_down #startXA #startYA abs
        wait 500
        move %arr [1 1] %arr [1 2]
        wait 500
        kleft_up %arr [1 1] %arr [1 2]       // навести курсор на неё
        wait 200
        set $b DeleteImage  (%a [1 1])  // удалить изображение из памяти
    else
        hint Не найдено. Переверните фрагмент
    end_if
    set %b GetImage (#startXB #startYB #endXB #endYB  abs) //запомнить 2-й фрагмент пазла во второй области
    set #b findimage ( 333 169 1016 558 (%b [1 1]) %arB 2 99 -1 3 abs )   // искать картинку
    log #b                               // результат поиска
    if  #b > 0                           // если картинка найдена
        kleft_down #startXB #startYB abs
        wait 500
        move %arB [1 1] %arB [1 2]
        wait 500
        kleft_up %arB [1 1] %arB [1 2]       // навести курсор на неё
        wait 200
        set $b DeleteImage  (%b [1 1])  // удалить изображение из памяти
    else
        hint Не найдено. Переверните фрагмент
    end_if
    wait 100
end_while
end_script


Конечно это первый вариант который пришел в голову но если это дело оптимизировать, то можно добиться и полного автоматизма. Если сделать фильтр фона через findcolor или разделить на участки с зоной ограничения(что бы игнорировал сам призрак) искал осколки сам. Ну если бы мы можно как-то прикрутить запоминание области экрана(шаблона, призрака) и искать запомненные так же в памяти осколки на этой области.
Делитесь своими решением по сему вопросу
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

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

 

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