Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: Terri on February 07, 2017, 11:22:49 AM
-
Здравствуйте! У меня такая проблема:
Нужно найти в области 0,0,1000,1000 все пиксели цвета скажем 777. А потом выбрать среди них ближайший к точке 500,500 и кликнуть на него. Как это можно сделать? Заранее огромное спасибо!
-
1.вы ищите один пиксель, а не все пиксели данного цвета, так из чего-же вы собрались выбирать?
2. Если нужно кликнуть на пиксель ближайший к 500, 500 - то зачем вообще поиск в таком большом секторе?
3. сделать это можно, например с помощью сортировки полученных массивов или расширением области поиска, но ваша задача явно взята с потолка или описание не соответствует практической цели.
1. Я ошибся, искать нужно действительно все пиксели.
2. Данные для примера, сектор действительно будет поменьше. А ситуация может быть такая, что найдётся лишь один нужный пиксель и будет ближе к рамке.
3. Задача не с потолка) С потолка цифры, реальные цифры: окно 20,103,1331,533 а цвет 806482.
-
Область обязательно задавать.
И если пикселов заданного цвета много - уменьшать область иначе до пенсии будем ждать.
#name "Ближайший к заданным координатам пиксель"
// цель
$Xtarget = 500
$Ytarget = 500
GETSCREEN(0,0,1000,1000)
SCANPXL($scan, 0,0,1000,1000, 777)
$dist = 10000
$scan_size = ARRSIZE($scan)
FOR($i=0, $i < $scan_size, 2)
$X = $scan[$i]
$Y = $scan[$i+1]
$d_temp = DIST($Xtarget, $Ytarget, $X, $Y)
IF($d_temp < $dist)
$dist = $d_temp
$Xdot_target = $X
$Ydot_target = $Y
END_IF
IF($Y > $Ytarget + $dist)
$i = $scan_size
END_IF
END_CYC
UNDEFINE($scan)
IF($dist ! 10000)
LOGWRITE ("Ближайший пиксель к заданным координатам X/Y: ", $Xdot_target, " / ", $Ydot_target)
ELSE
LOGWRITE ("Заданный цвет не найден")
END_IF
HALT
-
Жду как оказалось четверть секунды, Огромное спасибо!! ;)
-
похожая задачка (кстати так и не решенная :( ), может чем поможет автору данной темы ;)
http://crapware.aidf.org/forum/index.php?topic=2569.msg16133#msg16133