Добрый день!
Имееются маленькие рисунки (иконки в игре). Надо игровое поле перевести в Массив. Для этого требуется поиск нескольких пикселей для каждой из вариантов иконок.
имеющиеся значиния пикселя и координаты (брал по 2 значения на иконку)
Проход по полю выполняется циклами построчно, отступом 34 пикселя.
вопрос, как проверку на соответсвие сделать с помощью 1ой фунции?
скрипт набросал корявый :wacko:
Как бы упростить этот скрипт?
Имееются маленькие рисунки (иконки в игре). Надо игровое поле перевести в Массив. Для этого требуется поиск нескольких пикселей для каждой из вариантов иконок.
имеющиеся значиния пикселя и координаты (брал по 2 значения на иконку)
Код:
цвет пикселя координаты
0x23BC00 297, 193 0x62B900 303, 212 - Листок
0x929383 320, 204 0x888866 335, 208 - Серебрянная монета
0xB82211 357, 204 0xFC0E0E 373, 200 - Божья коровока
0xFFAD21 463, 199 0xFFAA1E 408, 200 - Золотая монета
0x683311 217, 228 0x665530 225, 246 - Кувшин
Проход по полю выполняется циклами построчно, отступом 34 пикселя.
вопрос, как проверку на соответсвие сделать с помощью 1ой фунции?
скрипт набросал корявый :wacko:
Код:
;0x23BC00 297, 193 0x62B900 303, 212 - Листок
;0x929383 320, 204 0x888866 335, 208 - Серебрянная монета
;0xB82211 357, 204 0xFC0E0E 373, 200 - Божья коровока
;0xFFAD21 463, 199 0xFFAA1E 408, 200 - Золотая монета
;0x683311 217, 228 0x665530 225, 246 - Кувшин
#include <PixelSearchEx.au3>
#include <Array.au3>
Dim $pole[14][14]
WinActivate("Безымянный - Paint")
Local $TestX1 = 203, $TestY1 = 187, $TestX2 =668, $TestY2 = 543
Local $iX =0, $iY = 0
For $i = 0 to 10
$iX =0
For $j = 0 To 13
$pix = PixelSearchEx($TestX1+$iX, $TestY1+$iY, $TestX1+$iX+25, $TestY1+$iY+25, 0x23BC00, 30)
If Not @error Then
;MouseMove($pix[0], $pix[1], 10)
$pix1 = PixelGetColor($pix[0]+6, $pix[1]+29);, $pix[0]+7, $pix[1]+20, 0x62B900, 30)
$pole[$i][$j] = 1
Else
; Второй цвет
$pix = PixelSearchEx($TestX1+$iX, $TestY1+$iY, $TestX1+$iX+25, $TestY1+$iY+25, 0x929383,10)
If Not @error Then
;MouseMove($pix[0], $pix[1], 10)
$pix1 = PixelSearchEx($pix[0]+14, $pix[1]+3, $pix[0]+16, $pix[1]+5, 0x888866, 10)
if Not @error Then
MouseMove($pix1[0], $pix1[1], 7)
;PixelGetColor($pix[0]+8, $pix[1]+18) = 0x665530 Then
$pole[$i][$j] = 2
EndIf
Else
;Третий цвет
$pix = PixelSearchEx($TestX1+$iX, $TestY1+$iY, $TestX1+$iX+25, $TestY1+$iY+25, 0xB82211, 5)
If Not @error Then
;MouseMove($pix[0], $pix[1], 10)
$pix1 = PixelGetColor($pix[0]+15, $pix[1]+4);, $pix[0]+7, $pix[1]+20, 0x62B900, 30)
$pole[$i][$j] = 3
Else
; Четверный Цвет
$pix = PixelSearchEx($TestX1+$iX, $TestY1+$iY, $TestX1+$iX+25, $TestY1+$iY+25, 0xFFAD21, 5)
If Not @error Then
;MouseMove($pix[0], $pix[1], 10)
$pix1 = PixelGetColor($pix[0]+15, $pix[1]+4);, $pix[0]+7, $pix[1]+20, 0x62B900, 30)
$pole[$i][$j] = 4
Else
; Пятый Цвет
$pix = PixelSearchEx($TestX1+$iX, $TestY1+$iY, $TestX1+$iX+25, $TestY1+$iY+25, 0x683311, 5)
If Not @error Then
;MouseMove($pix[0], $pix[1], 10)
$pix1 = PixelSearchEx($pix[0]+7, $pix[1]+17, $pix[0]+9, $pix[1]+19, 0x665530, 10)
if Not @error Then
;MouseMove($pix1[0], $pix1[1], 7)
;PixelGetColor($pix[0]+8, $pix[1]+18) = 0x665530 Then
$pole[$i][$j] = 5
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
$iX += 36
Next
$iY += 36
Next
_ArrayDisplay($pole)
Как бы упростить этот скрипт?