rreading=1
const forwriting=2
const forappending=8
const ParaGrayLevel = 70 
//灰度:黑底 则 >ParaGrayLevel 为1 小于为0
//灰度:白底 则 <ParaGrayLevel 为1 大于为0
//灰度:白底时,此值应设大些,比如200
//Dim GA( 4, 10 )
Dim GA( 20, 20 ) // 英雄无敌中,一个数字为4*9
Dim MyArray, Rx, Ry

//单点调试用
//Rx = GetPosNum( "981,6", 4, 9 )
//MessageBox Rx
//

Rx = GetPosNum( "939,6", 4, 9 )&GetPosNum( "945,6", 4, 9 )&GetPosNum( "951,6", 4, 9 )
Ry = GetPosNum( "969,6", 4, 9 )&GetPosNum( "975,6", 4, 9 )&GetPosNum( "981,6", 4, 9 )
MessageBox Rx&","&Ry


Function GetPosNum( XYbegin, MyXStep, MyYStep )
	//XYbegin=数字的左上角坐标 (游戏屏幕坐标)
	//MyXStep=X轴步长
	//MyYStep=Y轴步长
	Dim MyArray
	Dim Rx, Ry, Num
	Dim Rs 
	
	GetPosNum = -1
	//数组溢出判断
	If MyXStep > 10 or MyXStep < 1 Then
	If MyXStep > 10 or MyXStep < 1 Then
	If InStr( XYbegin, "," ) = 0 Then
		Goto EndOfGetPosNum
	End If 
	End If 
	End If 
	
	//初始化数组
	For i = 1 to MyXStep+10
		For j = 1 to MyYStep+10
			GA( i, j ) = -1
		Next
	Next 
	
	//建立灰度表
	MyArray = Split( XYbegin, ",")
	Rx = CInt( MyArray(0) ) 
	Ry = CInt( MyArray(1) ) 
	For i = 1 to MyXStep
	For j = 1 to MyYStep
		 Rs = GetPixelColor( Rx + i - 1, Ry + j - 1 )
		 If GetRedOfRGB( Rs ) > ParaGrayLevel Then
		 //白底则用 < ParaGrayLevel
			 GA( i, j ) = 1
		 Else
			 GA( i, j ) = 0
		 End If 
	Next 
	Next 
str = ""
For j = 1 to 9
For i = 1 to 4
	Str = Str & GA( i, j )&"|"
Next 
Str = Str & vbCrlf
Next 
	
	//调用GetNum判断是数字0--9中的哪个
	Num = GetNum( MyXStep, MyYStep ) 
	
	GetPosNum = Num
	//返回值格式为: 指定区域翻译过来的数字0--9
	Rem EndOfGetPosNum

//调试找特征用
//MessageBox Str&Num

End Function 

Function GetNum( MyXStep, MyYStep ) 
	//对全局变量ParaGrayLevel进行特征比对
	Dim parallel
	
	//初始化返回值,-1为未找到匹配的特征
	GetNum = -1
	//进行特征判断,分别是0--9共10个数字
	For parallel = 1 to 10
		//原本只需用指定位置进行对比就可以
		//这里用相对移动的判断,
		//是为了图形数字识别作准备
		For i = 1 to MyXStep 
			For j = 1 to MyYStep
				//2*5的空洞,为0
				Fs = "" & GA( i, j ) & GA( i+1, j )
				Fs = Fs & GA( i, j+1 ) & GA( i+1, j+1 )
				Fs = Fs & GA( i, j+2 ) & GA( i+1, j+2 )
				Fs = Fs & GA( i, j+3 ) & GA( i+1, j+3 )
				Fs = Fs & GA( i, j+4 ) & GA( i+1, j+4 )