Что нового

[Автоматизация] [Вопрос] [Теория] Поиск пикселя по зонам. Правильная реализация

Seresal

Новичок
Сообщения
8
Репутация
0
Доброго времени суток.
Вопрос простой для большинства из пишущих на AutoIT :IL_AutoIt_1:, но к сожалению заведший меня в тупик - никак не могу понять что лучше...

Дано.
Статичная карта. Динамичный (при движении персонажа) объект на карте (цвета отличные от цветов карты), обозначающий персонажа. Возможность движения в четырех направлениях: вперед, вправо, назад, влево.

Задача.
Отслеживать положение объекта (персонажа) и руководить его движением.

Реализация.
Разбить карту на зоны (своеобразная сетка), отслеживать положение объекта (пикселя) на карте и исходя из зоны задавать направление движения.

Вопрос.
Как лучше/правильнее отслеживать объект?
Увидел два варианта.
Первый - отслеживать объект по всей рабочей плоскости карты, при нахождении сопоставлять с зонами и производить движение.
Второй - проводить поиск по каждой зоне поочередно (можно начинать с ближайших зон относительно последнего местоположения) и при нахождении проводить движение.

Если будут предложения с другими вариантами - буду только рад :beer:.
Интересна именно теория, с кодом, думаю, справлюсь.
 

hedji

Продвинутый
Сообщения
408
Репутация
89
В теории при меньшем количестве пикселей поля должно отработать быстрее.
Делаем тестовый стенд и меряем:
Код:
$color = Dec("FD9247", 0)
$x = PixelSearch(0, 0, 100, 100, $color, 0, 1)
ConsoleWrite($x[0] & ":" & $x[1] & @CRLF)

>Exit code: 0 Time: 0.8917

Код:
$color = Dec("FD9247", 0)
$x = PixelSearch(0, 0, @DesktopWidth, @DesktopHeight, $color, 0, 1)
ConsoleWrite($x[0] & ":" & $x[1] & @CRLF)

>Exit code: 0 Time: 0.8599

При нескольких прогонах лидеры менялись местами, но крутились около 0.75-0.9.
Я бы начал с просмотра всей карты разом, т.к. это проще в плане объема кода.
 
Автор
S

Seresal

Новичок
Сообщения
8
Репутация
0
Большое спасибо :ok:. Примерно так и думал, правда несколько иным образом дошел - количество строк/кода меньше, по крайней мере на вскидку (у меня :stars:smile:, при варианте с поиском по всей рабочей плоскости.
 
Верх