Что нового

Как передать значение из функции в другую

vindizel

Новичок
Сообщения
15
Репутация
0
Доброго времени суток! Надеюсь кто-нибудь подскажет. Суть задачи: Мне нужно распознать трехзначное число на картинке. (Картинка находится всегда на одном месте, но числа всегда разные). Я задаю сначала поиск левой части экрана на сотни, потом часть экрана где находятся десятки и оставшуюся часть где единицы. Вот пример поиска на сотни(на десятки и единицы выглядит соответсятвенно отличие только в координатах):
Код:
Func Sotni()
While 1
$one = _ImageSearchArea("one.png",1,0,0,454, 721,$x,$y,0)
   If $one = 1 Then
	  MsgBox(4096,"Условие","Найдено = 1",25)
	  Desyatki()
   Else
	  $two = _ImageSearchArea("two.png",1,0,0,454, 721,$x,$y,0)
	  If $two = 1 Then
		 MsgBox(4096,"Условие","Найдено = 2",25)
		 Desyatki()
	  Else
		 $three = _ImageSearchArea("three.png",1,0,0,454, 721,$x,$y,0)
		 If $three = 1 Then
			MsgBox(4096,"Условие","Найдено = 3",25)
			Desyatki()
		 Else
			$four = _ImageSearchArea("four.png",1,0,0,454, 721,$x,$y,0)
			If $four = 1 Then
			   MsgBox(4096,"Условие","Найдено = 4",25)
			   Desyatki()
			Else
			   $five = _ImageSearchArea("five.png",1,0,0,454, 721,$x,$y,0)
			   If $five = 1 Then
				  MsgBox(4096,"Условие","Найдено = 5",25)
				  Desyatki()
			   Else
				  $six = _ImageSearchArea("six.png",1,0,0,454, 721,$x,$y,0)
				  If $six = 1 Then
					 MsgBox(4096,"Условие","Найдено = 6",25)
					 Desyatki()
				  Else
					 $seven = _ImageSearchArea("seven.png",1,0,0,454, 721,$x,$y,0)
					 If $seven = 1 Then
						MsgBox(4096,"Условие","Найдено = 7",25)
						Desyatki()
					 Else
						$eight = _ImageSearchArea("eight.png",1,0,0,454, 721,$x,$y,0)
						If $eight = 1 Then
						   MsgBox(4096,"Условие","Найдено = 8",25)
						   Desyatki()
						Else
						   $nine = _ImageSearchArea("nine.png",1,0,0,454, 721,$x,$y,0)
						   If $nine = 1 Then
							  MsgBox(4096,"Условие","Найдено = 9",25)
							  Desyatki()
						   EndIf
						EndIf
					 EndIf
				  EndIf
			   EndIf
			EndIf
		 EndIf
	  EndIf
   EndIf
WEnd
EndFunc
Например ищем число 251. Ищем сотни находим и выводим сообщение найдено 2, дальше переходим к десяткам если там нашло 5 выводим сообщение 25 и переходим к единицам, если там нашли 1 то пишем найдено 251 и кликаем по числу 251 расположеному рядом.
Как сделать чтобы мне не пришлось прописывать 999 вариантов исхода событий. Как сделать чтобы при переходе на следующую функцию выполнялась конкатенация предыдущего значение к следующему??
 

ildar

Осваивающий
Сообщения
252
Репутация
30
Я не видел картинки для нуля
Код:
$aArrayPNG['one.png', 'two.png', 'three.png', 'four.png', 'five.png', 'six.png', 'seven.png', 'eight.png', 'nine.png']

$iEdinica = 0
$iDesyatki = 0
$iSotnya = 0
; Для десяток
For $i = 1 to 9
	$iChislo = _ImageSearchArea($aArrayPNG[$i],1,0,0,454, 721,$x,$y,0)
	If $iChislo = 1 Then
		$iDesyatki = $i
		Exitloop
	Else
	EndIf
Next

; тоже самое для едениц и сотен

$iItog = $iSotnya*100 + $iDesyatki*10 + $iEdinica

Изменил, теперь без картинки нуля.
 
Автор
V

vindizel

Новичок
Сообщения
15
Репутация
0
Нуля не было потому что я скидывал код для сотен, а в трехзначном числе не может быть 0 сотен в остальных 0 присутствует. Спасибо за то что выручил!
 
Верх