Набросал робота, который будет играть в сабж.
2 вопроса к сообществу:
1.Можно ли сделать проще?
На поле 6 карт рубашкой вверх, у игрока и НПС свои. Игрок всегда начинает первым.
Партия идет до 5 побед (максимум 9 раундов).
На подпрограммы разбил в попытках разобраться почему не работает.
Код в подпрограмме (gam) взял на этом форуме.
SUB(gam) // рандомим цифру 1-6, берем из стека соответствующие координаты и кликаем
$c = 0
$m = "123456"
WHILE($c = 0)
$f = INT(STRCUT($m, RND(1, STRLEN($m)), 1))
IF(STRLEN($m) > 1)
$m = INT(STRFILTER ($m, $f, 0))
Else
$c = 1
END_IF
$r = ($f * 2 - 1)
$j = ($r - 1)
$k = $pic[$j]
$l = $pic[$r]
LCLICK($k,$l)
WAIT(1)
DBLCLICK(738,793) // выделяем цифру набраных очков
WAITMS (50)
KEYDOWN (#CTRL) // копируем в буфер
WAITMS (50)
KEYDOWN (#C)
WAITMS (50)
KEYUP (#C)
KEYUP (#CTRL)
$summ = INT(FROMCLIP())
IF($summ > 14) // если набрано больше 14 выходим из цикла
$c = 1
END_IF
WAITMS(50)
END_CYC
WAIT(1)
END_SUB
SUB(igra)
LCLICK(547,573) // кликаем в поле ставки
WAITMS(300)
KEYPRESS(#1) // ставим копейку
WAITMS(300)
LCLICK(954,573) // начинаем игру
WAIT(3)
// находим рубашки карт на своей половине поля и заносим их координаты в массив
GETSCREEN
scanpicture($pic, 433,643, 696,881, "pict.bmp")
WHILE($pic > 0)
gam() //кликаем в любую неоткрытую карту и проверяем сумму
GETSCREEN // заканчиваем раунд
IF_PICTURE_IN (900,900, 1040,970, "raund.bmp")
LCLICK($_return1, $_return2)
WAIT(3)
END_IF
GETSCREEN // начинаем следующий раунд
IF_PICTURE_IN (900,900, 1040,970, "next.bmp")
LCLICK($_return1, $_return2)
WAIT(3)
ELSE // если закончилась партия
UNDEFINE($pic)
LCLICK(818,989) // начинаем новую партию
MOVE(10,10)
WAIT(3)
END_IF
WAITMS(50)
END_CYC
END_SUB
FOR($bp, $bp < 3) // сколько партий играть
igra()
END_CYC
HALT
Второй вопрос ломает мне мозг уже несколько дней
На домашнем компьютере (вин7х64) кликерман не выходит из цикла по условию в 55 строке и прогоняет впустую еще один раз подпрограмму gam, после чего продолжает работать нормально. Даже если в 56 строке я прописываю жестко GOTO или HALT - они игнорируются одну итерацию цикла в строке 44.
Сейчас попробовал этот скрипт не меняя ничего на рабочем компьютере (винХР) и тут кликерман отрабатыват все отлично.
На домашнем компе куча других скриптов в подобной ситуации работают нормально.
Прошу помощи.