Что нового

Помогите разобраться с массивом результатов поиска

123

  • 1

    Голосов: 2 100.0%
  • 2

    Голосов: 0 0.0%

  • Всего проголосовало
    2

DenLDI

Новичок
Сообщения
4
Репутация
0
Работает поиск букв на экране , найденные координаты букв добавляются в массив, никак не получается достать из массива случайную букву и ткнуть мышкой по ее координатам
Код:
Func S_M_N()
Local $AC=0xA0C6A0 ; Искомый цвет пикселя точки А
Local $x1=826 ; границы области поиска
Local $x2=868
Local $y1=665
Local $y2=748
Local $sh=20 ; вириация цвета
;Local $time=3000;  1 секунда - время проверки

Local $SBx=23 ; буква S координаты точки В относительно полученных координат А
Local $SBy=0
Local $SCx=0 ; буква S координаты точки С относительно полученных координат А
Local $SCy=6

Local $MBx=19 ; буква M координаты точки В относительно полученных координат А
Local $MBy=0
Local $MCx=0 ; буква M координаты точки С относительно полученных координат А
Local $MCy=7

Local $NBx=17 ; буква N координаты точки В относительно полученных координат А
Local $NBy=0
Local $NCx=0 ; буква N координаты точки С относительно полученных координат А
Local $NCy=7

Local $CC=0xA0C6A0 ; Искомый цвет пикселя точки C

Local $per=0 ; счетчик найденных букв
;Local $perx
;Local $pery
;Local $Arrayx
;Local $Arrayy
Local $Array[5][5] ; массив найденных результатов (координаты X , Y найденных букв), максимум 5 букв.
;S
	For $xa = $x1 To $x2
		For $ya = $y1 To $y2
			$a=PixelSearch( $xa, $ya, $xa, $ya, $AC, $sh )
			If @error=0 Then
				$b=PixelSearch( $a[0]+$SBx, $a[1], $a[0]+$SBx, $a[1], $AC, $sh )
				If @error=0 Then
					$c=PixelSearch( $b[0], $b[1]+$SCy, $b[0], $b[1]+$SCy, $CC, $sh )
					If @error=0 Then
					ProgressOn("","","Буква S найдена",1024,0,1)
					MouseMove($c[0], $c[1], 10)
					$Array[$per][$per]=$c[0] & $c[1]
					ConsoleWrite($Array[$per][$per] & @LF)
					$per=$per+1
					ElseIf @error=1 Then
					EndIf
				ElseIf @error=1 Then
				EndIf
			ElseIf @error=1 Then
			EndIf
		Next
	Next

;M
	For $xa = $x1 To $x2
		For $ya = $y1 To $y2
			$a=PixelSearch( $xa, $ya, $xa, $ya, $AC, $sh )
			If @error=0 Then
				$b=PixelSearch( $a[0]+$MBx, $a[1], $a[0]+$MBx, $a[1], $AC, $sh )
				If @error=0 Then
					$c=PixelSearch( $b[0], $b[1]+$MCy, $b[0], $b[1]+$MCy, $CC, $sh )
					If @error=0 Then
					ProgressOn("","","Буква M найдена",1024,0,1)
					MouseMove($c[0], $c[1], 10)
					$Array[$per][$per]=$c[0] & $c[1]
					ConsoleWrite($Array[$per][$per] & @LF)
					$per=$per+1
					ElseIf @error=1 Then
					EndIf
				ElseIf @error=1 Then
				EndIf
			ElseIf @error=1 Then
			EndIf
		Next
	Next

;N
	For $xa = $x1 To $x2
		For $ya = $y1 To $y2
			$a=PixelSearch( $xa, $ya, $xa, $ya, $AC, $sh )
			If @error=0 Then
				$b=PixelSearch( $a[0]+$NBx, $a[1], $a[0]+$NBx, $a[1], $AC, $sh )
				If @error=0 Then
					$c=PixelSearch( $b[0], $b[1]+$NCy, $b[0], $b[1]+$NCy, $CC, $sh )
					If @error=0 Then
					ProgressOn("","","Буква N найдена",1024,0,1)
					MouseMove($c[0], $c[1], 10)
					$Array[$per][$per]=$c[0] & $c[1]
					ConsoleWrite($Array[$per][$per] & @LF)
					$per=$per+1
					ElseIf @error=1 Then
					EndIf
				ElseIf @error=1 Then
				EndIf
			ElseIf @error=1 Then
			EndIf
		Next
	Next
;Local $w= Random ($Array[0][0],$Array[$per][$per],1)
;ConsoleWrite($w & @LF)
;MouseMove ($w[0], $w[1], 10)
ProgressOn("","","Случайная из найденных букв",1024,0,1)
EndFunc
 

bugaj

Знающий
Сообщения
140
Репутация
11
x = Random(Length(array));

array(x); (квадратные чо та не показываются)

не?

ну я кто его знает как в автоите, но просто выбираешь случайное число от 0 до количества элементов в массиве, и то и тыкаешь )
 
Верх