'下面开始是代码部分了
Option Explicit
Dim arr(1 To 25) As Boolean '存放颜色
Dim flag As Boolean
Private Sub Form_Load()
Dim i%
For i = 1 To 20
arr(1) = True
Picture1(i).BackColor = vbWhite
Next i
arr(8) = False: Picture1(8).BackColor = vbBlack
arr(12) = False: Picture1(12).BackColor = vbBlack
arr(13) = False: Picture1(13).BackColor = vbBlack
arr(14) = False: Picture1(14).BackColor = vbBlack
arr(18) = False: Picture1(18).BackColor = vbBlack
'黑为假白则为真
Me.Caption = "点灯游戏"
End Sub
Private Sub Picture1_Click(index As Integer)
Dim x%, y%
x = index Mod 5 '获取所在列的列数
y = (index - 1) \ 5 '获取所在行的行数
'===========以下改变前后的颜色=============
Call changePic(index) '改变自身颜色
If x = 1 Then '第一列
Call changePic(index + 1)
ElseIf x = 0 Then '第五列
Call changePic(index - 1)
ElseIf x >= 2 And x <= 4 Then '中间三列
Call changePic(index - 1)
Call changePic(index + 1)
End If
'===========以下改变上下的颜色=============
If y = 0 Then '第一行
Call changePic(index + 5)
ElseIf y = 4 Then '第五行
Call changePic(index - 5)
ElseIf y >= 1 And y <= 3 Then '中间三行
Call changePic(index - 5)
Call changePic(index + 5)
End If
'===============颜色改变完成===============
Call showAsw
End Sub
'改变自身颜色的过程
Private Sub changePic(x As Integer)
If Picture1(x).BackColor <> vbWhite Then
Picture1(x).BackColor = vbWhite
arr(x) = True
Else
Picture1(x).BackColor = vbBlack
arr(x) = False
End If
End Sub
'验证是否过关的过程
Private Sub showAsw()
Dim i%
flag = False '默认为假
For i = 1 To 25
If arr(i) = True Then '遇到白色退出循环
flag = False
Exit For
Else
flag = True
End If
Next i
If flag = True Then MsgBox "恭喜!您过关了!" '过关信息
End Sub
Option Explicit
Dim arr(1 To 25) As Boolean '存放颜色
Dim flag As Boolean
Private Sub Form_Load()
Dim i%
For i = 1 To 20
arr(1) = True
Picture1(i).BackColor = vbWhite
Next i
arr(8) = False: Picture1(8).BackColor = vbBlack
arr(12) = False: Picture1(12).BackColor = vbBlack
arr(13) = False: Picture1(13).BackColor = vbBlack
arr(14) = False: Picture1(14).BackColor = vbBlack
arr(18) = False: Picture1(18).BackColor = vbBlack
'黑为假白则为真
Me.Caption = "点灯游戏"
End Sub
Private Sub Picture1_Click(index As Integer)
Dim x%, y%
x = index Mod 5 '获取所在列的列数
y = (index - 1) \ 5 '获取所在行的行数
'===========以下改变前后的颜色=============
Call changePic(index) '改变自身颜色
If x = 1 Then '第一列
Call changePic(index + 1)
ElseIf x = 0 Then '第五列
Call changePic(index - 1)
ElseIf x >= 2 And x <= 4 Then '中间三列
Call changePic(index - 1)
Call changePic(index + 1)
End If
'===========以下改变上下的颜色=============
If y = 0 Then '第一行
Call changePic(index + 5)
ElseIf y = 4 Then '第五行
Call changePic(index - 5)
ElseIf y >= 1 And y <= 3 Then '中间三行
Call changePic(index - 5)
Call changePic(index + 5)
End If
'===============颜色改变完成===============
Call showAsw
End Sub
'改变自身颜色的过程
Private Sub changePic(x As Integer)
If Picture1(x).BackColor <> vbWhite Then
Picture1(x).BackColor = vbWhite
arr(x) = True
Else
Picture1(x).BackColor = vbBlack
arr(x) = False
End If
End Sub
'验证是否过关的过程
Private Sub showAsw()
Dim i%
flag = False '默认为假
For i = 1 To 25
If arr(i) = True Then '遇到白色退出循环
flag = False
Exit For
Else
flag = True
End If
Next i
If flag = True Then MsgBox "恭喜!您过关了!" '过关信息
End Sub