Продолжаем разработку бота для онлайн игры НЕБЕСА.
Итак, я решил, что мой бот еще и должен научиться драться с чертенком.
Для этого сначала надо разобрать полностью алгоритм:
1.) Определение нашего хода.
2.) Самый главный практически пункт - сканирование игрового поля и определение гемов.
3.) Тоже немаловажный пункт - нахождение лучших ходов.
4.) Ну и осталось только сходить, и возможно использовать магию.
С определением нашего хода все просто, нужно сканировать экран на наличие надписи "Ваш ход" и делать это в главном цикле бота. Как только надпись будет найдена, перейдем к функции определения хода противника и так по кругу.
Теперь нам надо сканировать игровое поле, для этого необходимо сначала определить левй верхний угол игрового поля.
Также нам понадобится массив [6][6] для того, чтобы записывать результат поиска в массив.
Также мы будем осуществлять поиск в цикле, как по строкам, так и по столбцам и по цвету в каждой ячейке.
Примерно всё это выглядит так:
Global $massiv[6][6]
Global $PoleX ; Левый вержний угол поля с гемами
Global $PoleY ; Левый нижний угол поля с гемами
Global $color[5]=[0xFFFE21,0x757066,0x59C81D,0xFF001A,0xF9E8AB]
Global $aColor[5]=["Желтый","Крест","Зеленый","Красный","Череп"]
Это определение необходимых нам переменных.
Функция поиска гемов на поле.
Func _FIND()
$X = $PoleX
$Y = $PoleY
$Flag = 4
$shade = 2
$Case = 0
$step = 2
$v = 1
$hwnd = 1
for $i = 0 to 5
for $j = 0 to 5 ; Это циклы о которых мы говорили
For $a = 0 To 4
$gem = PixelSearchEx($X,$Y,$X+38,$Y+38,$color[$a],$shade);
if Not @error Then
$massiv[$i][$j]=$aColor[$a]
Else
$gem = PixelSearchEx($X,$Y,$X+38,$Y+38,$colorB[$a],$shade);Доп проверка не найденых гемов!
if Not @error Then
$massiv[$i][$j]=$aColor[$a]
Else
;ToolTip($colorB[$a],$X,$Y);
EndIf
EndIf
Next
MouseMove($X,$Y,$v) ; Тестовое движение по клеткам
MouseMove($X+38,$Y+38,$v) ; Тестовое движение по клеткам
$X = $X+38
Next
$X = $PoleX
$Y = $Y+38
Next
$Y = $PoleY
;_ArrayDisplay($massiv) ; Покажем на экран полученный массив
EndFunc
Вот для начала попробуйте использовать данную функцию у себя.
В своем тесте у меня очень точно определяет цвет гемов на поле и записывает их значения в массив.
Дальнейшей задачей будет поиск комбинация, как это определить мне пока неизвестно =).
На выходных допишу статью!
ОтветитьУдалитьСтатья почти полностью дописана.
УдалитьКак Вам удалось определить комбинацию фигур? Начал изучать AutoIT по вашим статьям, очень нравиться.
ОтветитьУдалитьМассив, сравнение в массиве значений.
Удалить