Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: dimcik_18 on November 06, 2013, 02:12:06 PM
-
Подскажите пожалуста! Я сканирую область функций scanpxl нахожу всеx пихелей опеделеного цвета из этой кучи как мне найти пикселей с одинаковой координаты по X или по Y ?
-
Подскажите пожалуста! Я сканирую область функций scanpxl нахожу всеx пихелей опеделеного цвета из этой кучи как мне найти пикселей с одинаковой координаты по X или по Y ?
Уточните вопрос.
Двух координатно_одинаковых пикселей на экране вроде теоретически быть не может.
-
Подскажите пожалуста! Я сканирую область функций scanpxl нахожу всеx пихелей опеделеного цвета из этой кучи как мне найти пикселей с одинаковой координаты по X или по Y ?
Уточните вопрос.
Двух координатно_одинаковых пикселей на экране вроде теоретически быть не может.
Он имеет ввиду что нужно отфильтровать из найденных координат только с равными X координатами или Y координатами.
-
Да , Oraven вы правы
После сканирование получается куча [x1, y1, x2, y2, … , xn, yn] где x,y – пара координат, n-количество найденных пикселей. можно использовать функцию if ,
for ($i,$i<$n+1)
if ($x*$i=$x*$i+1)
Inc($h,1)
end_if
end_cyc
logwrite("найдены" $h "пикселей с одинаковой координаты :" $x )
это примерно так я вижу в теорий а в практике чтото не получается может у когото есть идея.
вот моя задача:
количество пикселей 36.координаты пикселей я знаю они расположены в квадрате 6 на 6 пикселей шагом 41 пикселей между ними и по X и по Y. пиксели бывают 5 цветов . мне нужно создать бот который определит одоцветные пиксели которые находится рядом. с помоши scanpxl я определяю координаты одноцвенных пикселей а сечас нужно их сортировать по координатам чтоб узнать какие находится рядом.
вот снизу поле может для понимание моей идей .
спосибо за ранее
-
А не проще ли использовать поиск картинки в два пикселя?
-
Может так?
LOGCLEAR
GETSCREEN
SCANPXL($ARR, 0,0,$_xmax,$_ymax, 255)
$num_X = 1
$i = 0
FOR ($i, $i<ARRSIZE($ARR), 2)
IF($i < ARRSIZE($ARR))
IF ($ARR[$i-2]+1 = $ARR[$i])
INC($num_X)
ELSE
IF($num_X > 1)
$txt = STRCONCAT("найдены ", $num_X, " смежных пикселей начиная с X = ", $ARR[$i-2]-$num_X+1, " общий Y = ", $ARR[$i-1])
LOGWRITE ($txt)
$num_X = 1
END_IF
END_IF
END_IF
$temp = $i
END_CYC
IF($num_X > 1)
LOGWRITE ("найдены ", $num_X, " смежных пикселей начиная с X = ", $ARR[$temp-2]-$num_X+1, " общий Y = ", $ARR[$temp-1])
END_IF
HALT
Смежные по X. Или картинку покажи что куда.
-
по ходу написания напоролся на косяк.
Если LOGWRITE состоит больше, чем из 5 частей и при этом внутри IF то всё остальное до END_IF не выполняется.
$num_X = 5
IF($num_X > 0)
LOGWRITE ("1","2","3","4","5","6")
$num_X = 1
$num_X = 3
END_IF
LOGWRITE ($num_X)
HALT
-
Вот что у меня есть :
GETSCREEN
$color[0]=3932412
$color[1]=13170943
$color[2]=33362
$color[3]=2097151
$color[4]=7900052
for ($i,$i<arrsize($color))
SCANPXL($var, 505,255, 760,510, $color[$i-1])
while (arrsize($var) > 0)
$y = arrpop($var)
$x = arrpop($var)
INC($Num,1)
INC($tot,1)
LOGWRITE ("X: ", $X, " Y: ", $Y)
END_CYC
UNDEFINE($var)
LOGWRITE ("=====",$color[$i-1])
LOGWRITE (" найдено: ",$Num)
UNDEFINE($Num)
END_CYC
LOGWRITE ("Всего найдено: ", $tot)
UNDEFINE($tot)
HALT
вот резултат лога:
13:29:38 X: 698 Y: 479
13:29:38 X: 575 Y: 479
13:29:38 X: 575 Y: 438
13:29:38 X: 534 Y: 438
13:29:38 X: 739 Y: 397
13:29:38 X: 657 Y: 356
13:29:38 X: 657 Y: 315
13:29:38 X: 575 Y: 315
13:29:38 X: 739 Y: 274
13:29:38 X: 698 Y: 274
13:29:38 =====цвет1
13:29:38 найдено: 10
13:29:38 X: 534 Y: 479
13:29:38 X: 698 Y: 438
13:29:38 X: 616 Y: 438
13:29:38 X: 698 Y: 397
13:29:38 X: 657 Y: 397
13:29:38 X: 534 Y: 397
13:29:38 X: 698 Y: 315
13:29:38 X: 534 Y: 315
13:29:38 X: 616 Y: 274
13:29:38 X: 534 Y: 274
13:29:38 =====цвет2
13:29:38 найдено: 10
13:29:38 X: 657 Y: 479
13:29:38 X: 657 Y: 438
13:29:38 X: 616 Y: 397
13:29:38 X: 698 Y: 356
13:29:38 X: 575 Y: 274
13:29:38 =====цвет3
13:29:38 найдено: 5
13:29:38 X: 739 Y: 479
13:29:38 X: 739 Y: 438
13:29:38 X: 739 Y: 356
13:29:38 X: 534 Y: 356
13:29:38 =====цвет4
13:29:38 найдено: 4
13:29:38 X: 616 Y: 479
13:29:38 X: 575 Y: 397
13:29:38 X: 616 Y: 356
13:29:38 X: 575 Y: 356
13:29:38 X: 739 Y: 315
13:29:38 X: 616 Y: 315
13:29:38 X: 657 Y: 274
13:29:39 =====цвет5
13:29:39 найдено: 7
13:29:39 Всего найдено: 36
-
И какую информацию дал этот пример? Как искать и так все знают. Тебе то что нужно?
Конкретно какую информацию ты хочешь получить из координат?
-
И какую информацию дал этот пример? Как искать и так все знают. Тебе то что нужно?
Конкретно какую информацию ты хочешь получить из координат?
я добавил картинку в преведушей сообшений . Исползуя координат хочу определить одноцветные пиксели которые нажодится рядом для создане бота который оприделил бы оптимальный ход.
у меня есть версия этого бота где я использовал if_pixel_in но он посто делает ход соединяя 3 камни
в примере просто показал с чего я начал и общую картину в коркретной ситуаций
и может быть это ошибочный путь то что я начал !
-
Где-то я это уже видел.
Мне кажется это не правильный путь. Гораздо проще сканировать поле по клеткам. В каждом определяя предмет и сразу же проверять соседние клетки со сдвигом в 41. Если нашлась пара, проверять вокруг крайних полей наличие предмета и сразу делать ход либо запоминать вариант и давать ему "вес".
Так же обработать варианты с исключением из середины:
О-О
- О-
В этом случае подряд вообще ничего нет, а ход есть. Или так:
OO-OO
- - О--
-
Где-то я это уже видел.
Мне кажется это не правильный путь. Гораздо проще сканировать поле по клеткам. В каждом определяя предмет и сразу же проверять соседние клетки со сдвигом в 41. Если нашлась пара, проверять вокруг крайних полей наличие предмета и сразу делать ход либо запоминать вариант и давать ему "вес".
Так же обработать варианты с исключением из середины:
О-О
- О-
В этом случае подряд вообще ничего нет, а ход есть. Или так:
OO-OO
- - О--
спосибо понял что это путь в некуда. бот каторый у меня есть роботает по этому прицепу сканирует поле по клеткам когда ноходит OO проверяет ? и делает ход .
? ?
OO OO
? ? O
так с помощю if зделал для всех возможных вариантов но есть поблема он делает первый ход каторый находит нету веса просто если я поставил первых красных проверять то если есть ход он делает его если нет проверяет желтые и.т.д
и это для 3 камней а если есть 5 дальше он не видит и по этому я думал что по координатам может быть получется.
хотел чтобы бот видел сразу все поле и потом принять решение что двигать
-
Ты сделай в 2 прохода. В первом ищет варианты по 5, если нет, вторым проходом ищет обычные.
В каждом естественно цикл по всем предметам.
Или прямо идти по клеткам подряд. 1,2,3... Если нашли вариант из 3, сохраняем координаты действия. Ищем дальше. Все тройные пропускаем и пытаемся найти на 5 (если нашли, координаты действия перебиваем) или на 6 (координаты действия перебиваем)
Всё. выполняем действие.
На 6 кстати:
- О- -
О-ОО
- О- -
- О- -
Даже на 7 бывает, но их можно и не искать.
А ты эти места проверить не забыл?
? ?
? OO ?
? ?
-
Ты сделай в 2 прохода. В первом ищет варианты по 5, если нет, вторым проходом ищет обычные.
В каждом естественно цикл по всем предметам.
Или прямо идти по клеткам подряд. 1,2,3... Если нашли вариант из 3, сохраняем координаты действия. Ищем дальше. Все тройные пропускаем и пытаемся найти на 5 (если нашли, координаты действия перебиваем) или на 6 (координаты действия перебиваем)
Всё. выполняем действие.
На 6 кстати:
- О- -
О-ОО
- О- -
- О- -
Даже на 7 бывает, но их можно и не искать.
А ты эти места проверить не забыл?
? ?
? OO ?
? ?
попробую сегодня написать срипт спосибо большое за идей но как сохранить координаты найденых вариантов? потом из всех найдениых (канечно дать им вес) выбрать лутший ход.