Итак , что бы всем было ясно :
Игра: -Flesh
Задача бота (очень похожа на бота Пузыри http://www.botovod.ru/bots-for-browser-games/bot-dlya-puziri-vkontakte-t286-100.html):
-1.Поиск символов на игровом поле 6*6
(5 символов + у каждого камня свой множитель + камни объединены в группы, Красный жёлты зелёный)
-2.Подсчет каждого символа отдельно *.
-3.По алгоритмам нахождение идеального варианта раскладки (я так понимаю нужен двумерный массив)
-4.Рисование в проге поля 6*6 с символами (как выглядит вообще без разницы главное наглядно ДО и ПОСЛЕ)буду очень благодарен если дадите пример из Пузыри Вконтакте
-5.РАСКЛАДКА Нахождение и удаление в строке и столбце 3 и более одинаковых символов(максимум 4 столбец, 6 строчка) (одновременно)
потому что может быть так (смотри 8)
это поле исходное|5 4 1 5 6 4|
________________|4 8 8 8 2 1|
________________|6 8 2 5 6 7|
________________|3 8 5 8 7 9|
-6.После удаления одинаковых цветов , заменить пустое место символами сверху
это поле полученное|5 E E E 6 4|
__________________|4 E 1 5 6 1|
__________________|6 E 2 5 6 7|
__________________|3 4 5 8 7 9|
-7. строка лого для наглядности происходящего
*цвет допустим зелёный = камень зелёный * кол-во зелёных камней * множитель
ПРИМЕР: зелёный* 10 *3 = 30 (множитель зелёного 3)
**группа символов = (зелёный* 10 *3)+(жёлтый* 6 *1)+(красный* 9 *5)=30+6+45=81
*** E - на поле означает пустое место значение 0 (в игре это символы падающие рандомом)
Вроде ясно изложил суть помощника
Для бота написал только графический интерфейс и алгоритмы
, вот возникли вопросы.
КАКИМИ методами написать задачу 1 и 4 на AutoIt? что можете подсказать.
Пункты 5 и 6 можно осуществить на AutoIt? КАК это воплотить???
Буду рад любой помощи
Если что-то не понятно или упустил КРИЧИТЕ!
СПАСИБО Belfigor , nonenicks, Fever
Задачу 1 я решил таким способом РЕШЕНИЕ
Задачу 4 я решил таким способом РЕШЕНИЕ
Задачу 7 я решил таким способом РЕШЕНИЕ
Cкрин для задачи 1 и 4
Игра: -Flesh
Задача бота (очень похожа на бота Пузыри http://www.botovod.ru/bots-for-browser-games/bot-dlya-puziri-vkontakte-t286-100.html):
-1.Поиск символов на игровом поле 6*6

-2.Подсчет каждого символа отдельно *.
-3.По алгоритмам нахождение идеального варианта раскладки (я так понимаю нужен двумерный массив)
-4.Рисование в проге поля 6*6 с символами (как выглядит вообще без разницы главное наглядно ДО и ПОСЛЕ)буду очень благодарен если дадите пример из Пузыри Вконтакте
-5.РАСКЛАДКА Нахождение и удаление в строке и столбце 3 и более одинаковых символов(максимум 4 столбец, 6 строчка) (одновременно)
потому что может быть так (смотри 8)
это поле исходное|5 4 1 5 6 4|
________________|4 8 8 8 2 1|
________________|6 8 2 5 6 7|
________________|3 8 5 8 7 9|
-6.После удаления одинаковых цветов , заменить пустое место символами сверху
это поле полученное|5 E E E 6 4|
__________________|4 E 1 5 6 1|
__________________|6 E 2 5 6 7|
__________________|3 4 5 8 7 9|
-7. строка лого для наглядности происходящего
*цвет допустим зелёный = камень зелёный * кол-во зелёных камней * множитель
ПРИМЕР: зелёный* 10 *3 = 30 (множитель зелёного 3)
**группа символов = (зелёный* 10 *3)+(жёлтый* 6 *1)+(красный* 9 *5)=30+6+45=81

Вроде ясно изложил суть помощника
Для бота написал только графический интерфейс и алгоритмы
Код:
#include <GUIConstants.au3> ;
GUICreate("Помощник","300","900","10","25") ; создание окна
GUISetState (@SW_SHOW) ;будет дисплей пустой. диалог блок
$button = GUICtrlCreateButton ( "Найти камни",35 , 285 ,110 ,25 ) ;список использованных кнопок
$button2 = GUICtrlCreateButton ( "Обновить камни(v2)",155 , 285 ,110 ,25 )
GUICtrlCreateGroup ("Алгоритмы для вычисления ходов", 25, 350, 250, 55) ;группы
GUICtrlCreateGroup ("Загрузка иинформации", 25, 270, 250, 75)
$button3 = GUICtrlCreateButton ( "Алгоритм Квадрат",35 , 365,110 ,25 )
$button4 = GUICtrlCreateButton ( "Алгоритм Крест(v3)",155 , 365 ,110 ,25 )
; дополнительная информация для вычислений!
$checkCN = GUICtrlCreateCheckbox ("Щит(v2)", 35, 320, 60, 20) ; список использованных чеков
$checkCN2 = GUICtrlCreateCheckbox ("Берсерк(v2)", 150, 320, 80, 20)
;выбор режима!
$radio1 = GUICtrlCreateRadio ("Турнир!", 35, 410, 80, 20) ; Для игры в турнирах!
$radio2 = GUICtrlCreateRadio ("Простой бой(v5)", 150, 410, 120, 20) ;не работает это не скоро
;не активные окна (в разработке)
GUICtrlSetState($radio2,$GUI_DISABLE)
GUICtrlSetState($checkCN,$GUI_DISABLE)
GUICtrlSetState($button,$GUI_DISABLE)
GUICtrlSetState($button2,$GUI_DISABLE)
GUICtrlSetState($checkCN2,$GUI_DISABLE)
;( "$Pole2", 25, 25 ,250 ,210 )
GUICtrlCreateCombo ("Поле 1", 35,245,150) ; создать сначала элемент(пункт)
GUICtrlSetData(-1,"Поле 2(номер)|Поле 3(v3)(Двумерный массив)") ; добавить другой элемент(пункт) snd набор новый значение по умолчанию
;ПЕРВАЯ ПРОБА ПОИСКА КАМНЕЙ!
$Kamni = PixelGetColor( 1, 1 )
$Kamni2 = PixelGetColor( 1 , 2 )
$Kamni3 = PixelGetColor( 2, 1 )
$Kamni4 = PixelGetColor( 2 , 2 )
GUICtrlCreateLabel($Kamni , 10, 10, 250, 230)
; Выполнение Графический интерфейс пользователя до диалог есть закрытый
While 1 ; цикл
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then ExitLoop
Wend
КАКИМИ методами написать задачу 1 и 4 на AutoIt? что можете подсказать.
Пункты 5 и 6 можно осуществить на AutoIt? КАК это воплотить???
Буду рад любой помощи
Если что-то не понятно или упустил КРИЧИТЕ!
СПАСИБО Belfigor , nonenicks, Fever
Задачу 1 я решил таким способом РЕШЕНИЕ
Код:
Dim $XB[6][6], $YB[6][6], $XN[6][6], $YN[6][6] ; объявим локальные массивы координат квадратов (в которых ищем)
Dim $aColor[6], $aColorS[6], $aIF[6]; объявим локальные массивы код цвета , и сигнатуру
;##########-----Код цвета-----##########
$aColor[1] = "0x1B5A01"
$aColor[2] = "0xBFA872"
$aColor[3] = "0xE29700"
$aColor[4] = "0x908C81"
$aColor[5] = "0xE20819"
;##########-----Сигнатура цвета-----##########
$aColorS[1] = 1
$aColorS[2] = 2
$aColorS[3] = 3
$aColorS[4] = 4
$aColorS[5] = 5
;##########-----Связки координат для каждого искомого квадрата-----##########
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\---Строка N 1---/////////////////////////////////////
$XB[0][0] = 589 ;----------- 1 связка --- 1 связка --- 1 связка
$YB[0][0] = 351
$XN[0][0] = 599
$YN[0][0] = 361
$XB[0][1] = $XB[0][0]+41 ;----------- 2 связка
$YB[0][1] = $YB[0][0]
$XN[0][1] = $XB[0][1]+10
$YN[0][1] = $YB[0][1]+10
$XB[0][2] = $XB[0][1]+41 ;----------- 3 связка
$YB[0][2] = $YB[0][1]
$XN[0][2] = $XB[0][2]+10
$YN[0][2] = $YB[0][2]+10
$XB[0][3] = $XB[0][2]+41 ;----------- 4 связка
$YB[0][3] = $YB[0][2]
$XN[0][3] = $XB[0][3]+10
$YN[0][3] = $YB[0][3]+10
$XB[0][4] = $XB[0][3]+41 ;----------- 5 связка
$YB[0][4] = $YB[0][3]
$XN[0][4] = $XB[0][4]+10
$YN[0][4] = $YB[0][4]+10
$XB[0][5] = $XB[0][4]+41 ;----------- 6 связка
$YB[0][5] = $YB[0][4]
$XN[0][5] = $XB[0][5]+10
$YN[0][5] = $YB[0][5]+10
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\---Строка N 2---/////////////////////////////////////
$XB[1][0] = $XB[0][0] ;----------- 1 связка
$YB[1][0] = $YB[0][0]+41
$XN[1][0] = $XB[1][0]+10
$YN[1][0] = $YB[1][0]+10
$XB[1][1] = $XB[0][1] ;----------- 2 связка
$YB[1][1] = $YB[0][1]+41
$XN[1][1] = $XB[1][1]+10
$YN[1][1] = $YB[1][1]+10
$XB[1][2] = $XB[0][2] ;----------- 3 связка
$YB[1][2] = $YB[0][2]+41
$XN[1][2] = $XB[1][2]+10
$YN[1][2] = $YB[1][2]+10
$XB[1][3] = $XB[0][3] ;----------- 4 связка
$YB[1][3] = $YB[0][3]+41
$XN[1][3] = $XB[1][3]+10
$YN[1][3] = $YB[1][3]+10
$XB[1][4] = $XB[0][4] ;----------- 5 связка
$YB[1][4] = $YB[0][4]+41
$XN[1][4] = $XB[1][4]+10
$YN[1][4] = $YB[1][4]+10
$XB[1][5] = $XB[0][5] ;----------- 6 связка
$YB[1][5] = $YB[0][5]+41
$XN[1][5] = $XB[1][5]+10
$YN[1][5] = $YB[1][5]+10
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\---Строка N 3---/////////////////////////////////////
$XB[2][0] = $XB[1][0] ;----------- 1 связка
$YB[2][0] = $YB[1][0]+41
$XN[2][0] = $XB[2][0]+10
$YN[2][0] = $YB[2][0]+10
$XB[2][1] = $XB[1][1] ;----------- 2 связка
$YB[2][1] = $YB[1][1]+41
$XN[2][1] = $XB[2][1]+10
$YN[2][1] = $YB[2][1]+10
$XB[2][2] = $XB[1][2] ;----------- 3 связка
$YB[2][2] = $YB[1][2]+41
$XN[2][2] = $XB[2][2]+10
$YN[2][2] = $YB[2][2]+10
$XB[2][3] = $XB[1][3] ;----------- 4 связка
$YB[2][3] = $YB[1][3]+41
$XN[2][3] = $XB[2][3]+10
$YN[2][3] = $YB[2][3]+10
$XB[2][4] = $XB[1][4] ;----------- 5 связка
$YB[2][4] = $YB[1][4]+41
$XN[2][4] = $XB[2][4]+10
$YN[2][4] = $YB[2][4]+10
$XB[2][5] = $XB[1][5] ;----------- 6 связка
$YB[2][5] = $YB[1][5]+41
$XN[2][5] = $XB[2][5]+10
$YN[2][5] = $YB[2][5]+10
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\---Строка N 4---/////////////////////////////////////
$XB[3][0] = $XB[2][0] ;----------- 1 связка
$YB[3][0] = $YB[2][0]+41
$XN[3][0] = $XB[3][0]+10
$YN[3][0] = $YB[3][0]+10
$XB[3][1] = $XB[2][1] ;----------- 2 связка
$YB[3][1] = $YB[2][1]+41
$XN[3][1] = $XB[3][1]+10
$YN[3][1] = $YB[3][1]+10
$XB[3][2] = $XB[2][2] ;----------- 3 связка
$YB[3][2] = $YB[2][2]+41
$XN[3][2] = $XB[3][2]+10
$YN[3][2] = $YB[3][2]+10
$XB[3][3] = $XB[2][3] ;----------- 4 связка
$YB[3][3] = $YB[2][3]+41
$XN[3][3] = $XB[3][3]+10
$YN[3][3] = $YB[3][3]+10
$XB[3][4] = $XB[2][4] ;----------- 5 связка
$YB[3][4] = $YB[2][4]+41
$XN[3][4] = $XB[3][4]+10
$YN[3][4] = $YB[3][4]+10
$XB[3][5] = $XB[2][5] ;----------- 6 связка
$YB[3][5] = $YB[2][5]+41
$XN[3][5] = $XB[3][5]+10
$YN[3][5] = $YB[3][5]+10
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\---Строка N 5---/////////////////////////////////////
$XB[4][0] = $XB[3][0] ;----------- 1 связка
$YB[4][0] = $YB[3][0]+41
$XN[4][0] = $XB[4][0]+10
$YN[4][0] = $YB[4][0]+10
$XB[4][1] = $XB[3][1] ;----------- 2 связка
$YB[4][1] = $YB[3][1]+41
$XN[4][1] = $XB[4][1]+10
$YN[4][1] = $YB[4][1]+10
$XB[4][2] = $XB[3][2] ;----------- 3 связка
$YB[4][2] = $YB[3][2]+41
$XN[4][2] = $XB[4][2]+10
$YN[4][2] = $YB[4][2]+10
$XB[4][3] = $XB[3][3] ;----------- 4 связка
$YB[4][3] = $YB[3][3]+41
$XN[4][3] = $XB[4][3]+10
$YN[4][3] = $YB[4][3]+10
$XB[4][4] = $XB[3][4] ;----------- 5 связка
$YB[4][4] = $YB[3][4]+41
$XN[4][4] = $XB[4][4]+10
$YN[4][4] = $YB[4][4]+10
$XB[4][5] = $XB[3][5] ;----------- 6 связка
$YB[4][5] = $YB[3][5]+41
$XN[4][5] = $XB[4][5]+10
$YN[4][5] = $YB[4][5]+10
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\---Строка N 6---/////////////////////////////////////
$XB[5][0] = $XB[4][0] ;----------- 1 связка
$YB[5][0] = $YB[4][0]+41
$XN[5][0] = $XB[5][0]+10
$YN[5][0] = $YB[5][0]+10
$XB[5][1] = $XB[4][1] ;----------- 2 связка
$YB[5][1] = $YB[4][1]+41
$XN[5][1] = $XB[5][1]+10
$YN[5][1] = $YB[5][1]+10
$XB[5][2] = $XB[4][2] ;----------- 3 связка
$YB[5][2] = $YB[4][2]+41
$XN[5][2] = $XB[5][2]+10
$YN[5][2] = $YB[5][2]+10
$XB[5][3] = $XB[4][3] ;----------- 4 связка
$YB[5][3] = $YB[4][3]+41
$XN[5][3] = $XB[5][3]+10
$YN[5][3] = $YB[5][3]+10
$XB[5][4] = $XB[4][4] ;----------- 5 связка
$YB[5][4] = $YB[4][4]+41
$XN[5][4] = $XB[5][4]+10
$YN[5][4] = $YB[5][4]+10
$XB[5][5] = $XB[4][5] ;----------- 6 связка
$YB[5][5] = $YB[4][5]+41
$XN[5][5] = $XB[5][5]+10
$YN[5][5] = $YB[5][5]+10
$shade = 15
$Case = 0
$step = 2
$hwnd = 1
;##########-----Цикл проходящий весь массив-----##########
For $aX = 0 To 5
For $aY = 0 To 5
_CheckColor() ; в ключение функции просмотра цвета
Next
;##########-----Функция опредиленя цвета в квадрате-----##########
Func _CheckColor()
For $a = 1 To UBound($aColor) - 1 ;сверяем наличие 5 цветов в ячейке...
$sSearch = PixelSearchEx($XB[$aX][$aY], $YB[$aX][$aY], $XN[$aX][$aY], $YN[$aX][$aY], $aColor[$a], $shade, $Case, $step, $hwnd)
If IsArray($sSearch) Then ;...если предыдущая ф-ция возвратила массив, то значит цвет найден и он в массиве под номером $i, тоесть $aColorS[$i]
$polemassiv[$aX][$aY] = $aColorS[$a]; присваеваем ячейке это значение
Return 1
EndIf
Next ;если же цикл прошел до конца, звачит совпадения цвета нет, следовательно присваеваем текущей ячейке значение 0
$polemassiv[$aX][$aY] = 0
Return 0
EndFunc
Код:
Func _ColorMassivPrint()
If $PoleMassiv[$i][$j] == 0 Then
GUICtrlCreatePic("0000.jpg",20+$j*43,10+$i*43, 41,41)
Else
If $PoleMassiv[$i][$j] == 1 Then
GUICtrlCreatePic("0001.jpg",20+$j*43,10+$i*43, 41,41)
Else
If $PoleMassiv[$i][$j] == 2 Then
GUICtrlCreatePic("0002.jpg",20+$j*43,10+$i*43, 41,41)
Else
If $PoleMassiv[$i][$j] == 3 Then
GUICtrlCreatePic("0003.jpg",20+$j*43,10+$i*43, 41,41)
Else
If $PoleMassiv[$i][$j] == 4 Then
GUICtrlCreatePic("0004.jpg",20+$j*43,10+$i*43, 41,41)
Else
If $PoleMassiv[$i][$j] == 5 Then
GUICtrlCreatePic("0005.jpg",20+$j*43,10+$i*43, 41,41)
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
EndFunc
Код:
$mylist = GUICtrlCreateList (_DateTimeFormat( _NowCalc(),5) & ">Запуск скрипта", 5,800,290,90)
$button6 = GUICtrlCreateButton ( "Очистить логи",5 , 885,80 ,20 );кнопка в отцовском окне
$checkCN3_log = "off"
$checkCN4_log = "off"
If GUICtrlRead($checkCN3) == $GUI_CHECKED Then
_XYmassivPrintMouse()
$checkCN3_log = "Проверка XY" ; Это просто для примера записи в переменную
EndIf
If GUICtrlRead($checkCN4) == $GUI_CHECKED Then
_ArrayDisplay($polemassiv) ;вывод результатов массива
$checkCN4_log = "Вывод массива"
EndIf
GUICtrlSetData($mylist,_DateTimeFormat( _NowCalc(),5) & "> Поиск камней+ " & $checkCN3_log & "+ " & $checkCN4_log) ; Это просто для примера записи в лого
Select
case $msg = $button6 ; кнопка очистки
GUICtrlSetData($mylist,"")
EndSelect
