Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: kvv73 on June 26, 2017, 10:38:19 PM
-
В игре существует карта 800х800, с разными картинками,видимая область карты на экране 10х6, прокручивание карты осуществляется стрелками вправо, влево, вверх, вниз. Необходимо найти определенную картинку и сделать по ней лкм 3раза. Всего надо найти 7 таких картинок.
Спасибо.
-
Может я не правильно объяснил,
Картинка ищется в видимой области карты, только необходимо автоматически, в скрипте, нажимать стрелку вправо.
-
Вы начинаете в точке 0.0 и надо просто пройти последовательно по всей карте, проверяя после каждого смещения наличие картинки, а когда картинок найдено 7 - заканчивать поиск. Так?
Ну и сдвиг стрелкой - это с клавиатуры (KEYPRESS(#RIGHT), #LEFT, #UP, #DOWN )?
[spoiler=возможный вариант кода]
$poisk=0 //количество найденных картинок
$Par_x=0 //сдвиг по горизонтали , место
$par_y=0 //сдвиг по вертикали , ряд
WHILE($poisk < 7) //если нашли 7 штук - дальше искать не надо
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "file.bmp", -1, 100) //Ну тут сами разберетесь, если возможно, что картинка в одном месте встретится дважды - значит через SCANPICTURE надо делать
For($a=0,$a<3) // клик и небольшая задержка, 3 раза
LCLICK($_return1, $_return2)
waitms(30)
END_CYC
INT($poisk) //нашли - прибавили к поиску 1
print("картинок найдено", $poisk)
END_IF
WAITMS(50)
If ($Par_x<79) //800/10=80 вариантов видимой области в одном ряду, а начали с 0
If( $par_y/2 = inc($par_y/2)) // для первого и всех нечетных рядов идем вправо. В целом должно бы сработать, но может не понять, чего хочу.
KEYPRESS(#right)
else // для остальных влево - в итоге двигаемся змейкой
KEYPRESS(#left)
end_if
INT($Par_x)
else //дошли до правого (левого) конца экрана, жмем вниз
print("конец строки, жму вниз")
KEYPRESS(#down)
$Par_x=0
INT($par_y)
end_if
WAITMS(500) //задержка для прогрузки следующей видимой области , больше или меньше надо - решайте сами
If ($par_y>133) // 800/6= 133,3, т.е. тут карта закончилась, останавливаем
HALT
end_if
END_CYC
HALT
[/spoiler]
-
стр 16
If($par_y/2 = INT($par_y/2)
стр 11
INC($poisk)
стр 21
INC($Par_x)
стр 26
INC($par_y)
В игре существует карта 800х800, с разными картинками,видимая область карты на экране 10х6
Так видимая область не вписывается целое число раз 800/6 = 133.(3)
-
То же самое, но с классической структурой
[spoiler=код]$poisk = 0 //количество найденных картинок
FOR($par_y=0, $par_y < 134)) // строки. ХЗ, может 133
IF($par_y/2 = INT($par_y/2))
$napr = 39
ELSE
$napr = 37
END_IF
FOR($par_x=0, $par_x < 80) // колонки
GETSCREEN
IF_PICTURE_IN(0,0, $_xmax,$_ymax, "file.bmp")
LCLICK($_return1, $_return2)
waitms(30)
INC($poisk) //нашли - прибавили к поиску 1
IF($poisk > 6)
$par_x = 1000
$par_y = 1000
END_IF
END_IF
KEYPRESS($napr)
WAITMS(500)
END_CYC
KEYPRESS(#down)
WAITMS(500)
END_CYC
HALT
[/spoiler]
[spoiler=дополнение]Обычно нажатие с краю карты направления "за край" ни к чему плохому не приводят, но если вдруг в этой игре всё не так, то добавляется одно условие
IF($par_x < 79)
KEYPRESS($napr)
WAITMS(500)
END_IF
[/spoiler]