// привязка к окну и получение координат Ctrl + A
set %path [1] "C:\Users\abc\Desktop\parapa" // путь к картинкам
init_arr %image up2 down2 left2 right2 // имена картинок стрелок
init_arr %image2 ball2 white2 // имя картинки бегунка и подсвеченной области
init_arr %coord (1) 786, 452 1111, 500 // область поиска стрелок
init_arr %coord (2) 833, 428 1073, 455 // область поиска бегунка
set #delta 8 // нажать пробел заранее, расстояние в пикселях от бегунка до подсвеченной области
showwindow windowhandle minimize // свернуть пилот
wait 500
log clear
log mode compact
log open 0 0 400 300
set #mindistX 20 // минимальное расстояние между картинками, иначе считается дублем
set #mindistY 20 // из-за большой погрешности находится больше картинок чем есть
set #startX %coord [1 1]
set #startY %coord [1 2]
set #endX %coord [1 3]
set #endY %coord [1 4]
while 1 = 1
set #tmp 0
while #tmp = 0 // ждём пока не появятся стрелки
set #tmp findcolor (#startX #startY #endX #endY (11161871, 13933932) %arr 2 1 1)
wait 100
end_while
wait 500
set size(%result)
set #z 0
for #i 1 size(%image) // ищем стрелки
set #a findimage (%coord [1 1] %coord [1 2] %coord [1 3] %coord [1 4] (%path [1]\%image[#i].bmp) %arr 2 80 -1 10)
if #a > 0
// удаление дублей картинок
set #ii -1
while #ii < size(%arr)
set #double 1
set #ii #ii + 1
while #double = 1
set #double 0
set #iii #ii + 1
set #jj #iii
while #jj < size(%arr)
set #jj #jj + 1
set #distX abs(eval(%arr [#iii 1] - %arr [#jj 1]))
set #distY abs(eval(%arr [#iii 2] - %arr [#jj 2]))
if #distX < #mindistX and #distY < #mindistY
delete_array %arr -#jj
set #jj #jj - 1
set #double 1
end_if
end_while
end_while
end_while
////////
for #j 1 size(%arr) // зиписываем все найденные картинки в массив
set #z #z + 1
init_arr %result (#z) %arr [#j 1] %arr [#j 2] #i
end_for
end_if
end_for
if size(%result) > 0
sort_array %result 1 // сортируем массив по координате X
end_if
for #i 1 size(%result) // нажимаем кнопки по порядку
switch %result [#i 3]
case 1: send {Up}
log Вверх
break
case 2: send {Down}
log Вниз
break
case 3: send {Left}
log Влево
break
case 4: send {Right}
log Вправо
end_switch
wait 50 + random(50)
end_for
set #a 0
while #a = 0 // пока не найдена подсвеченная область
set #a findimage (%coord [2 1] %coord [2 2] %coord [2 3] %coord [2 4] (%path [1]\%image2[2].bmp) %brr 2 90 -1 1)
wait 1
end_while
set #b findimage (%coord [2 1] %coord [2 2] %coord [2 3] %coord [2 4] (%path [1]\%image2 [1].bmp) %crr 2 70 1 5) // ищем бегунок
if #b > 0
set #brr %brr [1 1] - #delta
while #brr > %crr [1 1] // пока бегунок не дошёл до подсвеченной области
set #b findimage (%coord [2 1] %coord [2 2] %coord [2 3] %coord [2 4] (%path [1]\%image2 [1].bmp) %crr 2 70 1 5)
wait 1
end_while
send {Space}
log Пробел
wait 1000
end_if
log
end_while
end_script