用VB编写趣味打字程序
功能设计:屏幕上随机出现英文字符,在其降落过程中按键盘相应键位将其击落。在一定时间内,击中的字符越多得分越多,最后根据得分给出相应的评语。为增加趣味性,字符及其在屏幕上方出现的位置和下落速度都是随机产生的。
界面设计:新建工程,将Form1的Caption属性为“趣味打字”,Label1用于显示下落的随机字符,其Caption属性为“”(空),label2的Caption属性设为“得分”,Label3的Caption属性设为“时间”,Label4用于显示得分,其Caption属性设为“0”,Label5用于显示剩余时间,其Caption属性设为“200”。Command1的Caption属性设为“开始”,Timer1控制字符下落,其Interval属性设为“100”,即每1/10秒触发一次。Timer2控制倒计时,Interval属性设为“1000”,即每1秒触发一次。
程序代码:
Option Explicit
Dim score As Integer '定义得分
Dim c As String
Dim speed As Integer '定义速度
Sub init() '每个字符的初始化
Label1.Caption = Chr(Int(Rnd * 26) + 97) '随机字符
speed = Int(Rnd * 100 + 100)
Label1.Left = Int(Rnd * Form1.Width) '字符出现的位置
Label1.Top = 0
End Sub
Private Sub Command1_Click()
init
Timer1.Enabled = True '启动定时器
Timer2.Enabled = True
Command1.Visible = False '使命令按钮不可见
Label5.Caption = 200
Label4.Caption = 0
End Sub
Private Sub Form_KeyPress(KeyAscii As Integer)
If Chr(KeyAscii) = Label1.Caption Then '判断所按键位是否与产生的字符相符
init
score = score + 1
Label4.Caption = score
End If
End Sub
Private Sub Form_Load()
Randomize '初始化随机种子数
c = “时间到!”
End Sub
Private Sub Timer1_Timer()
Label1.Top = Label1.Top + speed
If Label1.Top > Form1.Height Then
init
End If
End Sub
Private Sub Timer2_Timer()
Label5.Caption = Val(Label5.Caption) - 1
If Val(Label5.Caption) <= 0 Then '判断时间是否用完
Timer1.Enabled = False
Label1.Caption = “”
Select Case score
Case Is <= 100
MsgBox c + vbCrLf + “别灰心,再加把劲!”
Case Is < 250
MsgBox c + vbCrLf + “不错,请继续努力。”
Case Is >= 250
MsgBox c + vbCrLf + “你真棒!恭喜你已成为高手。”
End Select
Timer2.Enabled = False
Command1.Visible = True '恢复命令按钮的可见状态
End If
End Sub
知识点:这里的要点是Timer控件和KeyPress事件,请注意文中的黑体部分。
Timer控件(也可以叫做计时器)是VB 6中属性值最少的控件之一,最主要的属性就是Interval和Enabled。Interval属性表示触发控件的时间间隔,以1/1000秒为单位,如设置为1000,则表示每隔1秒钟触发一次“Timer”事件,我们便可以在这个“Timer”事件中编写具有周期性的过程代码;而Enabled属性相当于一个开关,其值为“Ture/False”,设置为“True”时,便激活计时器开始计时,设置为“False”时则停止计时。
KeyPress事件是用户使用键盘进行输入时发生的。在这个事件中,我们可以通过KeyAscii这个参数捕获用户当前键入的按键,我们可以添加有关数据或密码验证等方面的代码,如本文中的“If Chr(KeyAscii)=Label1.Caption Then”语句,就是在检验用户输入的字符是否于随机出现的字符一致(有关键盘编程的实例,大家还可以参考《电脑报》2000年49期17版《键盘编程实例》一文)。