📄 shibie.bas
字号:
Attribute VB_Name = "Module2"
'****************************************************************************
'网 站:http://www.hackeroo.com/
'e-mail:wushgkjz@126.com
'OICQ : 266370
'****************************************************************************
Public Sub FenGe(ByVal n As Integer) '把第n个图片拷贝到数据b中
For i = 0 To 9: For j = 0 To 19
b(i, j).dot = a(10 * n - 5 + i, j).dot: b(i, j).tag = a(10 * n - 5 + i, j).tag
Next: Next
End Sub
Public Sub QuBian() '去掉边缘部分的黑点,这里左右各去掉1列,上下各去掉3行。
For i = 0 To 9: For j = 0 To 19
If i = 0 Or i = 9 Or j < 3 Or j > 17 Then b(i, j).dot = 0
Next: Next
End Sub
Public Sub SuanTag() '扫描纪录黑点的8个邻居的情况。
For i = 0 To 9: For j = 0 To 19
If b(i, j).dot = 1 Then
b(i, j).tag = b(i - 1, j - 1).dot * 1 + b(i, j - 1).dot * 2 + b(i + 1, j - 1).dot * 4 + b(i - 1, j).dot * 8 + b(i + 1, j).dot * 16 + b(i - 1, j + 1).dot * 32 + b(i, j + 1).dot * 64 + b(i + 1, j + 1).dot * 128
End If
Next: Next
End Sub
Public Sub JianHua()
'进一步简化图形
ok = False
Do While Not ok
SuanTag
ok = True
For gao = 0 To 19: For kuan = 0 To 9
If b(kuan, gao).dot = 1 Then
Select Case b(kuan, gao).tag
Case 244, 7, 41, 148, 224, 96, 5, 33, 132, 160, 1, 4, 32, 128, 129, 3, 6, 9, 20, 40, 96, 144, 192, 208, 212, 105, 104, 233
b(kuan, gao).dot = 0
b(kuan, gao).tag = 0
ok = False
Case Else
End Select
End If
Next: Next
Loop
End Sub
Public Sub QuQiao1() '去掉下卷的干扰,主要为提高识别2的准确性
For kuan = 1 To 8: For gao = 2 To 10
If b(kuan, gao).dot = 1 And b(kuan, gao).tag = 2 And b(kuan, gao - 1).tag = 70 Then
b(kuan, gao).dot = 0: b(kuan, gao - 1).dot = 0
End If
Next: Next
SuanTag
End Sub
Public Sub QuQiao2() '去掉上下翘起的干扰,主要为了识别3
For kuan = 1 To 8: For gao = 1 To 18
If b(kuan, gao).dot = 1 And b(kuan, gao).tag = 64 And b(kuan, gao + 1).tag = 130 Then
b(kuan, gao).dot = 0: b(kuan, gao + 1).dot = 0
End If
If b(kuan, gao).dot = 1 And b(kuan, gao).tag = 2 And b(kuan, gao - 1).tag = 68 Then
b(kuan, gao).dot = 0: b(kuan, gao - 1).dot = 0
End If
Next: Next
SuanTag
End Sub
Public Function is0() As Boolean
End Function
Public Function is1() As Boolean
Dim gao, kuan As Integer
Dim k1, k2 As Integer
k1 = 0: k2 = 0
For gao = 0 To 19: For kuan = 0 To 9
If b(kuan, gao).dot = 1 And b(kuan, gao).tag = 8 And gao > 8 Then k1 = gao
If b(kuan, gao).dot = 1 And (b(kuan, gao).tag = 16 Or b(kuan, gao).tag = 18) And gao > 8 Then k2 = gao
Next: Next
If k1 > 0 And k2 > 0 And k1 = k2 Then
is1 = True
Else
is1 = False
End If
End Function
Public Function is2() As Boolean
Dim gao, kuan As Integer
Dim k1, k2 As Integer
k1 = 0: k2 = 0
For gao = 0 To 19: For kuan = 0 To 9
If b(kuan, gao).dot = 1 And b(kuan, gao).tag = 16 And gao < 10 Then k1 = kuan
If b(kuan, gao).dot = 1 And b(kuan, gao).tag = 8 And gao > 9 Then k2 = kuan
Next: Next
If k1 > 0 And k2 > 0 And k2 - k1 > 1 Then
is2 = True
Else
is2 = False
End If
End Function
Public Function is3() As Boolean
Dim gao, kuan As Integer
Dim k1 As Integer
k1 = 0
For gao = 0 To 19: For kuan = 0 To 9
If b(kuan, gao).dot = 1 And b(kuan, gao).tag = 16 Then k1 = k1 + 1
Next: Next
If k1 > 2 Then
is3 = True
Else
is3 = False
End If
End Function
Public Function is4() As Boolean
Dim gao, kuan As Integer
Dim k1, k2 As Integer
k1 = 0: k2 = 0
For gao = 0 To 19: For kuan = 0 To 9
If b(kuan, gao).dot = 1 And b(kuan, gao).tag = 74 Then k1 = kuan
If b(kuan, gao).dot = 1 And b(kuan, gao).tag = 2 And gao > 9 Then k2 = kuan
Next: Next
If k1 > 0 And k2 > 0 And k1 = k2 Then
is4 = True
Else
is4 = False
End If
End Function
Public Function is5() As Boolean
Dim gao, kuan As Integer
Dim k1, k2 As Integer
k1 = 0: k2 = 0
For gao = 0 To 19: For kuan = 0 To 9
If b(kuan, gao).dot = 1 And b(kuan, gao).tag = 8 And gao < 10 Then k1 = kuan
If b(kuan, gao).dot = 1 And b(kuan, gao).tag = 16 And gao > 9 Then k2 = kuan
Next: Next
If k1 > 0 And k2 > 0 And k1 - k2 > 2 Then
is5 = True
Else
is5 = False
End If
End Function
Public Function is6() As Boolean
Dim gao, kuan As Integer
Dim k1, k2 As Integer
k1 = 0: k2 = 0
For gao = 0 To 19: For kuan = 0 To 9
If b(kuan, gao).dot = 1 And b(kuan, gao).tag = 8 And gao < 10 Then k1 = kuan
If b(kuan, gao).dot = 1 And b(kuan, gao).tag = 16 And gao > 9 Then k2 = kuan
Next: Next
If k1 > 3 And k2 = 0 Then
is6 = True
Else
is6 = False
End If
End Function
Public Function is7() As Boolean
Dim gao, kuan As Integer
Dim k1, k2 As Integer
k1 = 0: k2 = 0
For gao = 0 To 19: For kuan = 0 To 9
If b(kuan, gao).dot = 1 And b(kuan, gao).tag = 16 And gao < 9 Then k1 = gao
If b(kuan, gao).dot = 1 And b(kuan, gao).tag = 2 And gao > 5 Then k2 = gao
Next: Next
If k1 > 0 And k2 > 0 And k2 - k1 > 2 Then
is7 = True
Else
is7 = False
End If
End Function
Public Function is8() As Boolean '用横条来识别8,8中至少有长度为3的横条3个,
'5也有可能有,但是5在前面,已经识别。9也可能有,所以要把先识别9
Dim gao, kuan As Integer
Dim k1, k2 As Integer
k1 = 0: k2 = 0
For gao = 0 To 19: For kuan = 0 To 7
If b(kuan, gao).dot = 1 And b(kuan + 1, gao).dot = 1 And b(kuan + 2, gao).dot = 1 Then
k1 = k1 + 1: Exit For
End If
Next: Next
If k1 > 2 Then
is8 = True
Else
is8 = False
End If
End Function
Public Function is9() As Boolean
Dim gao, kuan As Integer
Dim k1, k2 As Integer
k1 = 0: k2 = 0
For gao = 0 To 19: For kuan = 0 To 9
If b(kuan, gao).dot = 1 And b(kuan, gao).tag = 74 Then k1 = kuan
If b(kuan, gao).dot = 1 And b(kuan, gao).tag = 16 And gao > 9 Then k2 = kuan
Next: Next
If k1 > 0 And k2 > 0 And k1 - k2 > 2 Then
is9 = True
Else
is9 = False
End If
End Function
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -