Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: Compot on February 08, 2015, 04:40:03 AM
-
Здравствуйте
Есть изображение:
(http://i66.fastpic.ru/big/2015/0208/51/5fa9d58b92e53bcceb495ac407eb1c51.png)
Нужно нажать клавиши на клавиатуре в направлении соответствующем изображению.
Порядок каждый раз разный.
Сначала думал над вариантом разделить картинку на блоки для сканирования и поочередного определения с соответствующим нажатием.
Но количество стрелок варьируется от 5 до 10, соответственно количество блоков может быть разное и они смещаются.
Плюс ко всему скрипт должен отрабатываться довольно быстро. на все про все около 10-15 секунд
Так же после правильного нажатия стрелка меняет цвет в течении 1 секунды.
При ошибочном нажатии сбрасывается на самое начало.
Подскажите как быть ?
-
Всё гораздо проще.
Обычный поиск картинки в области появления первой (4 картинки), затем правее найденной на размер мертвой зоны. Так до момента пока не будет найдено. По ходу поиска прожимать с паузой.
Можно еще вариант... Сканпикчуре 4 раза по разным стрелкам. Затем все 4 массива в 1 общий добавив к каждой паре координат направление. Массив отсортировать по увеличению икс. Всё, схема прожимов есть.
Да ещё вагон вариантов.
-
Всё гораздо проще.
Обычный поиск картинки в области появления первой (4 картинки), затем правее найденной на размер мертвой зоны. Так до момента пока не будет найдено. По ходу поиска прожимать с паузой.
Можно еще вариант... Сканпикчуре 4 раза по разным стрелкам. Затем все 4 массива в 1 общий добавив к каждой паре координат направление. Массив отсортировать по увеличению икс. Всё, схема прожимов есть.
Да ещё вагон вариантов.
Область появления первой картинки меняется постоянно в зависимости от количества. (Изображение по центру) если 10 стрелок то левее, если 5 правее.
Или можно что бы он определил любую из первой стрелок за начальную картинку ?
как говорится; Всё уже украдено до нас.....http://crapware.aidf.org/forum/index.php?topic=1768.0 (http://crapware.aidf.org/forum/index.php?topic=1768.0) :D
Что то мой мозг вскипел. Ща еще повникаю конечно
-
Можно конечно попробывать нажать любую стрелку..и поиск картинки уже нажатой (она становится синей) если нет то следующую и поиск
потмо определить её начальным изображением и далее искать следующую со смещением.
Можете тогда скинуть пример как искать со смещением..попробую сделать так
Так. Вот посчитал количество пикселей каждой стрелки (в игре стрелки выглядят иначе)
colormode (7)
Направление Цвет Кол-во Количество в правильно нажатой стрелке
право 16777215 325 наж 337
лево 16777215 315 наж 328
низ 16777215 322 наж 335
верх 16777215 318 наж 331
Подскажите что сделать следующим пунктом. У меня проблема я еще не до конца понимаю всех команд. Справку перечитал но есть моменты в ваших примерах о которых в справке не написано, или не очень интуитивно понятно.
Сори если досаждаю своими вопросами...но очень хочется разобраться в происходящем.
-
Область появления первой картинки меняется постоянно в зависимости от количества. (Изображение по центру) если 10 стрелок то левее, если 5 правее.
Или можно что бы он определил любую из первой стрелок за начальную картинку ?
Ну сделать предварительный поиск красного цвета, который в стрелке и от найденного-немного искать первую.
P.S. Не нужно ничего считать, здесь это лишнее.
-
Так сначала находим координаты первого пикселя первой стрелки
GETSCREEN
COLORMODE(7)
IF_PIXEL_IN(372,333, 917,410, 16777215)
WAITMS(100)
Потом получается от полученного пикселя (я так понимаю это будет первый попавшийся левый верхний) указываю зону поиска и сравниваю с заранее подготовленным изображением. Так ?
IF_PICTURE_IN ($_return1 -45, $_return2 -35, $_return1 +96, $_return2 +17, "verh.bmp", 0, 100)
KEYPRESS(#W)
WAITMS(100)
else
IF_PICTURE_IN ($_return1 -45, $_return2 -35, $_return1 +96, $_return2 +17, "niz.bmp", 0, 100)
KEYPRESS(#S)
WAITMS(100)
else
IF_PICTURE_IN ($_return1 -45, $_return2 -35, $_return1 +96, $_return2 +17, "levo.bmp", 0, 100)
KEYPRESS(#A)
WAITMS(100)
else
IF_PICTURE_IN ($_return1 -45, $_return2 -35, $_return1 +96, $_return2 +17, "pravo.bmp", 0, 100)
KEYPRESS(#D)
WAITMS(100)
END_IF
END_IF
END_IF
END_IF
END_IF
-
Ну коры передалать над я там напутал пока в торопях писал..эт понятно сделаю.
Вот теперь над мне с циклами и подпрограммами разобраться. Какие функции для этого используют...можете подсказать как должна выглядить схема...сделаю под себя
-
Размеры и расстояния тщательно не подбирал. Нужно подобрать точнее глядя на другие скрины.
GETSCREEN
// здесь нужно выбрать область (полосу) проходящую по центру стрелок, если такое возможно
IF_PIXEL_IN(372,370, 917,375, 2366701)
$start_x = $_return1-45
$start_y = $_return2-30
ELSE
HALT
END_IF
$find = 1
WHILE($find = 1)
GETSCREEN
IF_PICTURE_IN ($start_x,$start_y,$start_x+118,$start_y+88, "right.bmp")
KEYPRESS(#RIGHT)
WAITMS(1000)
$start_x = $start_x + 100
ELSE
IF_PICTURE_IN ($start_x,$start_y,$start_x+118,$start_y+88, "left.bmp")
KEYPRESS(#LEFT)
WAITMS(1000)
$start_x = $start_x + 100
ELSE
IF_PICTURE_IN ($start_x,$start_y,$start_x+118,$start_y+88, "up.bmp")
KEYPRESS(#UP)
WAITMS(1000)
$start_x = $start_x + 100
ELSE
IF_PICTURE_IN ($start_x,$start_y,$start_x+118,$start_y+88, "down.bmp")
KEYPRESS(#DOWN)
WAITMS(1000)
$start_x = $start_x + 100
ELSE
$find = 0
WAITMS(100)
END_IF
END_IF
END_IF
END_IF
END_CYC
// закончили
HALT
Ну или по другому поделить, ориентируясь на найденное. в преведущий раз.
-
Зачем двух? О размерах можно вести речь, когда определится из какой части вырезать картинки будет.