Щет. Я забыл образцы приложить. Да, их делал ровными по высоте.
Прикрепляю...
Поправил лог, теперь корректный при разнице больше ряда
//первое поле (прописываем свои координаты начала)
$startx = 500
$starty = 450
// размер клетки поля
$lx = 34
$ly = 30
// клеток поля...
$kx = 27
$ky = 10
// максимальное расстояние полей для реакции
$max_step = 10
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
IF($only = 0)
STRSEPARATE("К,П,Ч,Б", ",", $mast)
$endx = $startx + $lx*$kx
$endy = $starty + $ly*$ky
LOGCLEAR
$only = 1
END_IF
UNDEFINE($coord)
STRSEPARATE("0,0,0,0,0,0,0,0", ",", $coord)
GETSCREEN($startx,$starty, $endx, $endy)
FOR($m=0, $m < 4)
UNDEFINE($scan)
SCANPICTURE($scan, $startx,$starty, $endx, $endy, STRCONCAT($mast[$m], ".bmp"))
$a_size = ARRSIZE($scan)
IF($a_size > 0)
$coord[$m*2] = $scan[$a_size - 2]
$coord[($m*2)+1] = $scan[$a_size - 1]
END_IF
END_CYC
//FOR($i=0, $i < ARRSIZE($coord), 2)
// $x = $coord[$i]
// $y = $coord[$i+1]
// LOGWRITE("x/y ", $x, "/", $y)
// MOVE($x,$y)
// WAIT(1)
//END_CYC
// ищем последнюю букву
$curr_y = 0
FOR($i=0, $i < 8, 2)
$y = $coord[$i+1]
IF($y > $curr_y)
$curr_y = $y
END_IF
END_CYC
$curr_x = 0
FOR($i=0, $i < 8, 2)
$x = $coord[$i]
IF(($coord[$i+1] = $curr_y) & ($x > $curr_x))
$curr_x = $x
END_IF
END_CYC
LOGWRITE("current ", $curr_x, "/", $curr_y)
// считаем расстояние
$result = 100
FOR($m=0, $m < 4)
$x = $coord[$m*2]
$y = $coord[($m*2)+1]
IF(($curr_y - $y) > $ly)
//LOGWRITE("Разница больше одного ряда")
$result = $m
$m = 200
ELSE
IF($curr_y > $y)
$x = $startx - ($endx - $x)
END_IF
$step = INT((($curr_x - $x) / $lx) + 0.5)
LOGWRITE("step ", $mast[$m], " ", $step)
IF($step > ($max_step-1))
$result = $m
$m = 100
END_IF
END_IF
END_CYC
// действие (клик)
IF($result < 100)
IF($m > 150)
LOGWRITE("масть ", $mast[$result], " не было больше 27 шагов")
ELSE
LOGWRITE("масть ", $mast[$result], " не было ", $step, " шагов")
END_IF
SWITCH($result)
CASE(0) // К
LCLICK(1236,388)
CASE(1) // П
LCLICK(923,539)
CASE(2) // Ч
LCLICK(1236,382)
CASE(3) // Б
LCLICK(1257,179)
END_SWITCH
WAITMS(500)
END_IF
HALT