VERSION 5.00
Begin VB.Form Form1
AutoRedraw = -1 'True
BackColor = &H8000000B&
BorderStyle = 1 'Fixed Single
Caption = "聪聪扫雷"
ClientHeight = 5085
ClientLeft = 45
ClientTop = 735
ClientWidth = 4125
Icon = "Form1.frx":0000
LinkTopic = "Form1"
MaxButton = 0 'False
ScaleHeight = 5085
ScaleWidth = 4125
StartUpPosition = 2 '屏幕中心
Begin VB.PictureBox P
AutoRedraw = -1 'True
BackColor = &H8000000B&
Height = 3855
Left = 120
ScaleHeight = 3795
ScaleWidth = 3795
TabIndex = 3
Top = 1080
Width = 3855
Begin VB.CommandButton C
BackColor = &H8000000A&
Height = 105
Index = 0
Left = 120
Style = 1 'Graphical
TabIndex = 4
Top = 0
Width = 135
End
End
Begin VB.PictureBox Picture1
AutoRedraw = -1 'True
BackColor = &H8000000B&
Height = 855
Left = 120
ScaleHeight = 795
ScaleWidth = 3795
TabIndex = 0
Top = 120
Width = 3855
Begin VB.Timer Timer1
Enabled = 0 'False
Interval = 1000
Left = 2040
Top = 240
End
Begin VB.CommandButton c1
Caption = "Start"
BeginProperty Font
Name = "Arial"
Size = 18
Charset = 0
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 615
Left = 1320
TabIndex = 5
Top = 120
Width = 1095
End
Begin VB.TextBox Text2
Alignment = 1 'Right Justify
BackColor = &H80000006&
CausesValidation= 0 'False
BeginProperty Font
Name = "宋体"
Size = 21.75
Charset = 134
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
ForeColor = &H000000C0&
Height = 540
Left = 2640
Locked = -1 'True
TabIndex = 2
TabStop = 0 'False
Text = "0"
Top = 120
Width = 1035
End
Begin VB.TextBox Text1
Alignment = 1 'Right Justify
BackColor = &H80000006&
CausesValidation= 0 'False
BeginProperty Font
Name = "宋体"
Size = 21.75
Charset = 134
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
ForeColor = &H000000C0&
Height = 555
HideSelection = 0 'False
IMEMode = 2 'OFF
Left = 120
Locked = -1 'True
TabIndex = 1
TabStop = 0 'False
Text = "10"
Top = 120
Width = 1035
End
End
Begin VB.Menu mnustart
Caption = "开始(&S)"
End
Begin VB.Menu munexit
Caption = "退出(&E)"
End
Begin VB.Menu abaot
Caption = "关于(&A)"
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Dim a(9, 9) As Integer, coun As Integer, rei As Integer
'为0时打开一大片的的0
Public Sub op0(i As Integer)
C(i).BackColor = &HFFFFFF: C(i).Caption = a(Int(i / 10), Int(i Mod 10))
If i - 1 >= 0 And i Mod 10 <> 0 Then If C(i - 1).BackColor <> &HFFFFFF Then C_Click (i - 1)
If i > 9 And i Mod 10 <> 9 Then If C(i - 9).BackColor <> &HFFFFFF Then C_Click (i - 9)
If i >= 10 Then If C(i - 10).BackColor <> &HFFFFFF Then C_Click (i - 10)
If i >= 11 And i Mod 10 <> 0 Then If C(i - 11).BackColor <> &HFFFFFF Then C_Click (i - 11)
If i + 1 <= 99 And i Mod 10 <> 9 Then If C(i + 1).BackColor <> &HFFFFFF Then C_Click (i + 1)
If i + 9 <= 99 And i Mod 10 <> 0 Then If C(i + 9).BackColor <> &HFFFFFF Then C_Click (i + 9)
If i + 10 <= 99 Then If C(i + 10).BackColor <> &HFFFFFF Then C_Click (i + 10)
If i + 11 <= 99 And i Mod 10 <> 9 Then If C(i + 11).BackColor <> &HFFFFFF Then C_Click (i + 11)
End SubPrivate Sub abaot_Click()
MsgBox "版权所有,仅供学习,请不要用于商业用途,作者:袁聪,QQ:81734107,E-mail:janrn@163.com, 有任何问题请到我的博客留言,巴士飞扬技术博客 地址:www.busfly.cn, 如果支持我,就常来这里交流.我也会在这里提供更多原创代码."
End Sub
Private Sub C_Click(Index As Integer) '单击左键,用蓝色标记挖开
If C(Index).BackColor = vbRed Then
Else
If a(Int(Index / 10), Int(Index Mod 10)) = -1 Then rei = -10: Timer1.Enabled = False: click: MsgBox "你技术怎么这么菜啊,回去再练练吧!! 你所花的时间是:" + Str(Val(Text2.Text)) + "秒", vbOKOnly, "结果" 'Form2.Caption = "失败了,郁闷啊!": Form2.Picture = LoadPicture("G:\done\VB\第6章习题\6-131\3.gif"): Form2.Show
'挖错了雷,失败
If a(Int(Index / 10), Int(Index Mod 10)) <> -1 And C(Index).BackColor <> vbRed Then
If a(Int(Index / 10), Int(Index Mod 10)) = 0 Then
Call op0(Index)
Else
C(Index).BackColor = &HFFFFC0: C(Index).Caption = a(Int(Index / 10), Int(Index Mod 10))
End If
End If
End If
End Sub
Private Sub C_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
If rei <> -10 And rei <> 10 Then
If Button = 2 Then '右键时红色为插旗,再点右键取消
If C(Index).BackColor = vbRed Then
C(Index).BackColor = &H8000000A: coun = coun + 1
If a(Int(Index / 10), Int(Index Mod 10)) = -1 Then rei = rei - 1
Else
If C(Index).BackColor <> &HFFFFC0 And C(Index).BackColor <> &HFFFFFF Then C(Index).BackColor = vbRed: coun = coun - 1
If a(Int(Index / 10), Int(Index Mod 10)) = -1 Then rei = rei + 1
End If
Text1 = coun
If rei = 10 Then Timer1.Enabled = False: MsgBox "胜利,好极了! 你所花的时间是:" + Str(Val(Text2.Text)) + "秒", vbOKOnly, "结果"
End If
End If
'雷全部挖出,胜利
End Sub
Private Sub C1_Click()
Dim b(9) As Integer, temp As Integer, i As Integer, j As Integer
Randomize
coun = 10 '雷数计数器
Text1 = coun '雷数
rei = 0 '正确挖出的雷数
For i = 0 To 99
C(i).BackColor = &H8000000A
C(i).Caption = ""
a(Int(i / 10), Int(i Mod 10)) = 0 '全部为0,表示都没雷
Next
b(0) = Int(Rnd * 100) '随机产生1个雷
For i = 1 To 9
ji:
b(i) = Int(Rnd * 100) '随机产生9个雷
For j = 0 To (i - 1)
If b(i) = b(j) Then GoTo ji
Next
Next
For i = 0 To 9
temp = b(i)
a(Int(temp / 10), Int(temp Mod 10)) = -1 '雷
If temp - 1 >= 0 And temp Mod 10 <> 0 Then If a(Int((temp - 1) / 10), Int((temp - 1) Mod 10)) <> -1 Then a(Int((temp - 1) / 10), Int((temp - 1) Mod 10)) = a(Int((temp - 1) / 10), Int((temp - 1) Mod 10)) + 1 '附近的雷数加1
If temp - 9 > 0 And temp Mod 10 <> 9 Then If a(Int((temp - 9) / 10), Int((temp - 9) Mod 10)) <> -1 Then a(Int((temp - 9) / 10), Int((temp - 9) Mod 10)) = a(Int((temp - 9) / 10), Int((temp - 9) Mod 10)) + 1 '附近的雷数加1
If temp - 10 >= 0 Then If a(Int((temp - 10) / 10), Int((temp - 10) Mod 10)) <> -1 Then a(Int((temp - 10) / 10), Int((temp - 10) Mod 10)) = a(Int((temp - 10) / 10), Int((temp - 10) Mod 10)) + 1 '附近的雷数加1
If temp - 11 >= 0 And temp Mod 10 <> 0 Then If a(Int((temp - 11) / 10), Int((temp - 11) Mod 10)) <> -1 Then a(Int((temp - 11) / 10), Int((temp - 11) Mod 10)) = a(Int((temp - 11) / 10), Int((temp - 11) Mod 10)) + 1 '附近的雷数加1
If temp + 1 <= 99 And temp Mod 10 <> 9 Then If a(Int((temp + 1) / 10), Int((temp + 1) Mod 10)) <> -1 Then a(Int((temp + 1) / 10), Int((temp + 1) Mod 10)) = a(Int((temp + 1) / 10), Int((temp + 1) Mod 10)) + 1 '附近的雷数加1
If temp + 9 < 99 And temp < 90 And temp Mod 10 <> 0 Then If a(Int((temp + 9) / 10), Int((temp + 9) Mod 10)) <> -1 Then a(Int((temp + 9) / 10), Int((temp + 9) Mod 10)) = a(Int((temp + 9) / 10), Int((temp + 9) Mod 10)) + 1 '附近的雷数加1
If temp + 10 <= 99 Then If a(Int((temp + 10) / 10), Int((temp + 10) Mod 10)) <> -1 Then a(Int((temp + 10) / 10), Int((temp + 10) Mod 10)) = a(Int((temp + 10) / 10), Int((temp + 10) Mod 10)) + 1 '附近的雷数加1
If temp + 11 <= 99 And temp Mod 10 <> 9 Then If a(Int((temp + 11) / 10), Int((temp + 11) Mod 10)) <> -1 Then a(Int((temp + 11) / 10), Int((temp + 11) Mod 10)) = a(Int((temp + 11) / 10), Int((temp + 11) Mod 10)) + 1 '附近的雷数加1
Next
Timer1.Enabled = True
Text2.Text = "0"
End Sub
Private Sub Form_Click()
Call click
rei = -10
Timer1.Enabled = False
End Sub
Private Sub Form_Load()
C(0).Width = (P.Width - 550) / 10
C(0).Left = P.ScaleLeft + 50
C(0).Height = C(0).Width
C(0).Top = P.ScaleTop + 50
For m = 1 To 99
Load C(m)
C(m).Visible = True
C(m).Width = C(0).Width
C(m).Left = P.ScaleLeft + 50 + (C(0).Width + 50) * (m Mod 10)
C(m).Height = C(0).Width
C(m).Top = P.ScaleTop + 50 + (C(0).Width + 50) * Int(m / 10)
Next
C1_Click
End Sub
Public Sub click()
For i = 0 To 99
If a(Int(i / 10), Int(i Mod 10)) <> -1 Then '用白色标记周围没雷
If a(Int(i / 10), Int(i Mod 10)) = 0 Then C(i).BackColor = &HFFFFFF Else C(i).BackColor = &HFFFFC0 '用蓝色标记无雷
Else
C(i).BackColor = vbRed '用红色标记雷
End If
C(i).Caption = a(Int(i / 10), Int(i Mod 10))
Next
End Sub
Private Sub mnustart_Click()
C1_Click
End Sub
Private Sub munexit_Click()
Unload Me
End Sub
Private Sub Timer1_Timer()
Text2.Text = Val(Text2.Text) + 1
End Sub