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

2 страниц V < 1 2  
Ответить в эту темуОткрыть новую тему
> Puzzle, Пазл, складная картинка, мозаика.
FREEON
сообщение 3.3.2019, 0:52
Сообщение #21


*****

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



Цитата(sutra @ 3.3.2019, 0:48) *

Так в чём проблема? Не понимаю, как можно решать задачи проектирования алгоритма игры, не зная работы простейших операторов. Есть вопросы по алгоритму - это одно. Есть вопросы по синтаксису - это другое (хотя на такие элементарные вещи есть справка).

ну да есть... тока в справке ищется один пиксель но не 16...
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 3.3.2019, 0:56
Сообщение #22


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



Цитата
init_arr

init - это инициализация, что? можно получить при инициализации??

Цитата
ну да есть... тока в справке ищется один пиксель но не 16...
findcolor ищет ВСЁ. Там есть шаг.


Поиск активной, выделенной и т.п. области ищется с шагом равным высоте (ширине) клетки, ищется колором.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 3.3.2019, 0:58
Сообщение #23


*****

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



Цитата(sutra @ 3.3.2019, 0:53) *

init - это инициализация, что? можно получить при инициализации??

да знаю ток нам нужно из первого поиска findcolor записать цвет и примотать его к get color, а это я не знаю как сделать потому что (%a[#i 3]) - такого типа якорь не сработает
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 3.3.2019, 0:59
Сообщение #24


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



Нужна скорость, надо просто убить время и перейти на язык lua, благо парни потрудились и теперь почти всё неплохо описано во встроенной справке.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 3.3.2019, 1:01
Сообщение #25


*****

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



Цитата(sutra @ 3.3.2019, 0:56) *

init - это инициализация, что? можно получить при инициализации??

findcolor ищет ВСЁ. Там есть шаг.
Поиск активной, выделенной и т.п. области ищется с шагом равным высоте (ширине) клетки, ищется колором.

открыу амерыку, а а ничо что мне к этому шагу нужно добавить смещение пикселей так как точки плавают
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 3.3.2019, 1:17
Сообщение #26


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



Цитата
примотать его к get color
Так а зачем приматывать-то? Финдом получите сразу ВСЕ координаты. Вообще не нужен get color. Это просто упрощённый вариант findcolor-а. Find - ИЩЕТ (в области), get - даёт в конкретных координатах, то же самое что искать финдом в области поиска равной одному пикселю.


Цитата
открыу амерыку, а а ничо что мне к этому шагу нужно добавить смещение пикселей так как точки плавают

А как можно добавить смещение, если ПЛАВАЕТ? Я не вникал в конкретику задачи, но на вскидку всё несложно. Опять конфликт интересов получается. Нет алгоритма? Или что-то не ищет или ищет не ТО, или ищет не ТАМ?

Добавить смещение к шагу если оно известно. Если же определённое количество пикселей должно присутствовать в определённой области и они могут находиться в разных местах конкретной области поиска, есть параметр количества найденных пикселей. В таком случае просто сделать цикл, для анализа всех 16 клеток, путём поиска нужного цвета пикселей в нужном (достаточном) количестве.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 3.3.2019, 1:19
Сообщение #27


*****

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



Цитата(sutra @ 3.3.2019, 1:04) *

Так а зачем приматывать-то? Финдом получите сразу ВСЕ координаты. Вообще не нужен get color. Это просто упрощённый вариант findcolor-а. Find - ИЩЕТ (в области), get - даёт в конкретных координатах, то же самое что искать финдом в области поиска равной одному пикселю.

потому что 1й тип поиска мы делаем для запоминания...а второй нужен что бы собрать...два финда не получится потому что вот
Прикрепленное изображение
в первом поиске 16 пикселей четкий равный шаг, а на втором поле идет тот же щаг, но помимо того что пиксели разбросаны в рандомном порядки так и они смещаются на 2 пикселя в каждой плитке. Сирус для обычного поиска написал скрипт но у меня задача немного сложнее из-за отклонения и не понимаю как к ним якоря приделать. Задача не сложная но когда знаний в программировании ноль и uopilot первый язык где столкнулся с кодом да еще задачи не из простых то все...я как пес все понимаю но записать в виде кода не могу (IMG:style_emoticons/default/mellow.gif) а задачи которые уходят по сложности за примеры справки становятся неразрешимыми для меня (IMG:style_emoticons/default/sad.gif)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 3.3.2019, 1:58
Сообщение #28


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



Всё получится, мне очень трудно понять из эскизов, в чём проблема, но вроде я угадал. Надо просто поискать во всех 16 клетках нужный цвет. Надо найти в разбросе координат? В чём проблема? Надо найти несколько пикселей нужного цвета? В Чём проблема? Извините, не вникал, но не вижу задачи. Если есть отличия клеток и эти отличия Вам известны, надо просто найти эти отличия. В чём тут проблема, не понимаю.

Цитата
так и они смещаются на 2 пикселя в каждой плитке

Так и задайте область поиска БОЛЬШЕ на 3 пикселя.

Цитата
а задачи которые уходят по сложности за примеры справки становятся неразрешимыми для меня
Фигня это, освоите, просто Вам нужны примеры и опыт. К сожалению у меня с интуицией проблемы. Без конкретной, понятной для меня постановки задачи, мне сложно что-то советовать. Если бы я хоть раз в жизни играл в эту игру, совет родился бы мгновенно. Если пойму в чём тут сложность принятия решения, однозначно дам 100% рабочий вариант.


На всидку опять же. Надо организовать цикл, точнее 2 цикла один внутри другого от 1 до 4. И искать цвет в области от левого угла клетки + сколько там может быть пикселей, ну скажем плюс 5 по обоим осям. Финдом это ищется без вопросов.

А в конкретном Вашем случае, после наложения искомые пиксели уплывают на СТАТИЧНОЕ число пикселей по горизонтали и вертикали, просто в цикле (обоих циклах) увеличивать координаты поиска пикселя ровно на индекс цикла.

Тогда можно и get color-ом это делать.

Код
for #i 1 4
  for #j 1 4
    set #Xfind ... бла бла * #j
    set #Yfind ... бла бла * #i
    get color #color #Xfind + j  #Yfind + i  
    ...
  end_for
end_for

Смысл примерно такой. К статичным координатам прибавляем смещение равное индексам циклов.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 3.3.2019, 2:09
Сообщение #29


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26708
Пользователь №: 16.971
Возраст: 29



Цитата
смещаются на 2 пикселя в каждой плитке

get color
Код
set #startX 0   // координата X
set #startY 0   // координата Y
set #stepX 100 // шаг по Y
set #stepY 100 // шаг по Y

log clear
log mode compact

set #deltaX 0
set #deltaY 0
for #i 1 4
    set #ii #i - 1
    set #y #startY + #ii * #stepY + #deltaY
    set #deltaX 0
    for #j 1 4
        set #jj #j - 1
        set #x #startX + #jj * #stepX + #deltaX
        set #deltaX #deltaX + 2

        get color #color #x #y  // получили цвет
        set %b [#j #i] #color   // записали в массив
        log #x #y    #color
//        move #x #y
//        wait 300
    end_for
    set #deltaY #deltaY + 2
    log
end_for
end_script

Тоже самое:
findcolor
Код
set #startX 0   // координата X
set #startY 0   // координата Y
set #stepX 100 // шаг по Y
set #stepY 100 // шаг по Y

log clear
log mode compact

set #deltaX 0
set #deltaY 0
set #endX #startX + #stepX * 3 + 6
set #endY #startY + #stepY * 3 + 6

set #a findcolor (#startX #startY #endX #endY (0-16777215) %b)  // поиск
if  #a > 0
    for #i 1 4
        set #ii #i - 1
        set #y #startY + #ii * #stepY + #deltaY
        set #deltaX 0
        for #j 1 4
            set #jj #j - 1
            set #x #startX + #jj * #stepX + #deltaX
            set #deltaX #deltaX + 2

            set #index #y * (#endX + 1) + #x + 1
            log #x #y   %b [#index 3]
//            move #x #y
//            wait 300
        end_for
        set #deltaY #deltaY + 2
        log
    end_for
end_if
end_script

Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 3.3.2019, 2:13
Сообщение #30


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



Ну вот собственно и конкретный код именно того, о чём говорилось, Сайрус молодчина, мне просто лень было вспоминать язык Пилота.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 3.3.2019, 17:50
Сообщение #31


*****

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



Цитата(cirus @ 3.3.2019, 2:09) *

get color
Код
set #startX 0   // координата X
set #startY 0   // координата Y
set #stepX 100 // шаг по Y
set #stepY 100 // шаг по Y

log clear
log mode compact

set #deltaX 0
set #deltaY 0
for #i 1 4
    set #ii #i - 1
    set #y #startY + #ii * #stepY + #deltaY
    set #deltaX 0
    for #j 1 4
        set #jj #j - 1
        set #x #startX + #jj * #stepX + #deltaX
        set #deltaX #deltaX + 2

        get color #color #x #y  // получили цвет
        set %b [#j #i] #color   // записали в массив
        log #x #y    #color
//        move #x #y
//        wait 300
    end_for
    set #deltaY #deltaY + 2
    log
end_for
end_script

Тоже самое:
findcolor
Код
set #startX 0   // координата X
set #startY 0   // координата Y
set #stepX 100 // шаг по Y
set #stepY 100 // шаг по Y

log clear
log mode compact

set #deltaX 0
set #deltaY 0
set #endX #startX + #stepX * 3 + 6
set #endY #startY + #stepY * 3 + 6

set #a findcolor (#startX #startY #endX #endY (0-16777215) %b)  // поиск
if  #a > 0
    for #i 1 4
        set #ii #i - 1
        set #y #startY + #ii * #stepY + #deltaY
        set #deltaX 0
        for #j 1 4
            set #jj #j - 1
            set #x #startX + #jj * #stepX + #deltaX
            set #deltaX #deltaX + 2

            set #index #y * (#endX + 1) + #x + 1
            log #x #y   %b [#index 3]
//            move #x #y
//            wait 300
        end_for
        set #deltaY #deltaY + 2
        log
    end_for
end_if
end_script


Код

set #startX 410   // координата X
set #startY 210   // координата Y
set #stepX 100 // шаг по Y
set #stepY 100 // шаг по Y

log clear
log mode compact

set #deltaX 0
set #deltaY 0
set #endX #startX + #stepX * 3 + 6
set #endY #startY + #stepY * 3 + 6

set #a findcolor (#startX #startY #endX #endY (0-16777215) %b)  // поиск
for #k 1 16 1
    log %b[#k 1] %b[#k 2] %b[#k 3] //пишем в лог точки поиска
end_for
log -----------------------------
if  #a > 0
    while_not 457, 282 0  //ждем пока пазл рассыпится
        wait 500
    end_while
    wait 1s
    for #i 1 4
        set #ii #i - 1
        set #y #startY + #ii * #stepY + #deltaY
        set #deltaX 0
        for #j 1 4
            set #jj #j - 1
            set #x #startX + #jj * #stepX + #deltaX
            set #deltaX #deltaX + 2

            set #index #y * (#endX + 1) + #x + 1
            log #x #y   %b [#index 3]
            //move #x #y
            //wait 300
        end_for
        set #deltaY #deltaY + 2
        log
    end_for
end_if
end_script

Log:
Цитата

410 210 4794391
411 210 4728598
412 210 4662805
413 210 4597012
414 210 4662805
415 210 4662805
416 210 4662805
417 210 4597012
418 210 4662035
419 210 4662035
420 210 4662035
421 210 4793364
422 210 4793364
423 210 4793110
424 210 4858903
425 210 4858903
-----------------------------
410 210
512 210
614 210
716 210

410 312
512 312
614 312
716 312

410 414
512 414
614 414
716 414

410 516
512 516
614 516
716 516

как бы не вкуриваю чо он выводит (IMG:style_emoticons/default/ohmy.gif)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 3.3.2019, 19:14
Сообщение #32


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26708
Пользователь №: 16.971
Возраст: 29



Цитата
чо он выводит

Координаты и цвет в этих координатах.
Цитата
for #k 1 16 1
log %b[#k 1] %b[#k 2] %b[#k 3] //пишем в лог точки поиска
end_for

Это убрать.
Цитата
set #index #y * (#endX + 1) + #x + 1

Заменить на:
Код
set #index (#y - #startY) * (#endX - #startX + 1) + #x - #startX + 1
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 3.3.2019, 19:34
Сообщение #33


*****

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



Цитата(cirus @ 3.3.2019, 19:14) *

Координаты и цвет в этих координатах.

Неее... это и хотел узнать их цвет и координаты в точках...но смущает их шаг в 1 пиксель, по идее должно было вывести шаг по 100px по обоим осям координат.
Цитата

Это убрать.

Заменить на:
Код
set #index (#y - #startY) * (#endX - #startX + 1) + #x - #startX + 1


Заменил...вот результат log
410 210 4794391
411 210 4728598
412 210 4662805
413 210 4597012
414 210 4662805
415 210 4662805
416 210 4662805
417 210 4597012
418 210 4662035
419 210 4662035
420 210 4662035
421 210 4793364
422 210 4793364
423 210 4793110
424 210 4858903
425 210 4858903
-----------------------------
410 210 4794391
512 210 6824719
614 210 14516026
716 210 7091473

410 312 8270624
512 312 13591585
614 312 6059417
716 312 12148251

410 414 9130295
512 414 13285049
614 414 12899815
716 414 6719661

410 516 11058372
512 516 15523547
614 516 13393441
716 516 12884349
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 3.3.2019, 19:48
Сообщение #34


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26708
Пользователь №: 16.971
Возраст: 29



Цитата
но смущает их шаг в 1 пиксель

Потому что это неправильно и постом выше написано что надо убрать цикл.
Цитата
но идее должно было вывести шаг по 100px по обоим осям координат.

Не 100, а 102, сами же писали что смещение на 2 пикселя для каждой плитки.

Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 3.3.2019, 19:54
Сообщение #35


*****

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



Цитата(cirus @ 3.3.2019, 19:48) *

Не 100, а 102, сами же писали что смещение на 2 пикселя для каждой плитки.

Все верно на 2 после разбивки пазла.
А как правильно записать вывод лога? чо цикл не катит ведь если построчно писать то оно ж по идее так же запишется ведь счетчик #k эта ж тоже самое что разбивка на элементы...или нет
Теперь шаблон запоминаем этой строкой?
Код
set #a findcolor (#startX #startY #endX #endY (0-16777215) %b)  // поиск
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 4.3.2019, 2:22
Сообщение #36


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26708
Пользователь №: 16.971
Возраст: 29



Цитата
Теперь шаблон запоминаем этой строкой?

Нет. Как было так и остаётся, потому что:
Цитата
когда пазл рассыпается происходит смещение пикселей.

Запоминать надо до того как он изменился. А сначала никакого смещения нет.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

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

 

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