信息来源:中国VB网 作者:河北/王学军
这个游戏程序是本站的早期作品,使用的都是最基本的VB控件,代码也不复杂,现在拿出来只是想介绍给初学VB的朋友参考阅读。
右侧为游戏运行时的窗口界面。
标签Label1(1-4)用于存放用户输入的密码。标签Label1(0)用于显示剩余次数,标签Label2(1-4)用于红黄色正确性指示。按钮Command1用于试按确定。Command2(1-8)用于改变密码数字(数组中的单数放置在上面设置累加,双数放置在下面设置递减)。
'**********************************************************************************
'* *
'* 解密码游戏程序 *
'* *
'* 游戏的目的是破解电脑随机产生的一个四位数密码。密码板上方有四个彩色矩形是游戏 *
'* 对每次试开(按下OK钮)结果的提示:变成红色的个数就是密码中数字及位置都正确的个 *
'* 个数;变成黄色的个数就是密码中包含但位置不正确的数字个数,游戏提供12次机会。 *
'* *
'* 程序设计:王学军 *
'* 相关地址:
http://qipinw.126.com *
'* Copyright qipinw小雨点工作室 *
'* *
'**********************************************************************************
Option Explicit
Dim M(4), CISHU1, T0(4), T1, T2, T3(4) As Integer
Dim MM(4), MIMA(4) As String
Dim http, mail As String
Private Sub Form_Load()
Show
重新开始
End Sub
Private Sub 重新开始() '初始数据
Dim C As Integer
CISHU1 = 0
For C = 1 To 4
MM(C) = "0": Label1(C).Caption = "0"
Randomize (Timer)
MIMA(C) = Mid(Str(Int(10 * Rnd(1))), 2, 1)
Label2(C).BackColor = QBColor(0)
Next C
Label2(0).Caption = "12"
End Sub
Private Sub Command2_Click(Index As Integer) '按下数字按钮
Dim AnniuZu As Integer
AnniuZu = Int((Index - 1) / 2) + 1
M(AnniuZu) = Val(MM(AnniuZu))
If Int(Index / 2) = Index / 2 Then
If M(AnniuZu) = 0 Then M(AnniuZu) = 9 Else M(AnniuZu) = M(AnniuZu) - 1
Else
If M(AnniuZu) = 9 Then M(AnniuZu) = 0 Else M(AnniuZu) = M(AnniuZu) + 1
End If
MM(AnniuZu) = Mid$(Str(M(AnniuZu)), 2, 1)
Label1(AnniuZu).Caption = MM(AnniuZu)
Command1.SetFocus
End Sub
Private Sub Command1_Click() '试按OK
Dim A, C, AA As Integer
CISHU1 = CISHU1 + 1
If CISHU1 > 11 Then
A = MsgBox("游戏结束!" + Chr(13) + "密码应该是" + MIMA(1) + MIMA(2) + MIMA(3) + MIMA(4) + Chr(13) + "再来一把吗?", 4 + 32 + 0 + 0)
If A = 6 Then 重新开始: Exit Sub Else End
End If
'判断是否有位置及数值都对的位
T1 = 0: T2 = 0
For A = 1 To 4
If MM(A) = MIMA(A) Then
T0(A) = 1: T3(A) = 1: T1 = T1 + 1
Else
T0(A) = 0: T3(A) = 0
End If
Next
'判断是否有位置不对但数值对的位
For A = 1 To 4
For AA = 1 To 4
If T0(A) = 0 And T3(AA) = 0 Then
If MM(A) = MIMA(AA) Then T2 = T2 + 1: T3(AA) = 1: Exit For
End If
Next
Next
'显示正确情况
Label2(0).Caption = Mid(Str(12 - CISHU1), 2, Len(Str(12 - CISHU1)) - 1)
For A = 1 To 4: Label2(A).BackColor = QBColor(0): Next
For A = 1 To T1: Label2(A).BackColor = QBColor(12): Next
For A = T1 + 1 To T1 + T2: Label2(A).BackColor = QBColor(14): Next
If T1 = 4 Then
C = MsgBox("密码破解成功!" + Chr(13) + "再来一把吗?", 4 + 32 + 0 + 0)
If C = 6 Then 重新开始: Exit Sub Else End
End If
For A = 1 To 4: T0(A) = 0: Next
End Sub
Private Sub 退出_Click()
Dim C As Integer
C = MsgBox("确实要结束游戏吗?", 4 + 32 + 256 + 0)
If C = 6 Then End
End Sub