用VB编写趣味打字程序

Author: 云飞 Date: 2001年 1期

    也许你和我一样,面对键盘只会“一指禅”,看到别人的弹指神功炉火纯青,是不是很羡慕?那我们编个程序练练打字吧!
      功能设计:屏幕上随机出现英文字符,在其降落过程中按键盘相应键位将其击落。在一定时间内,击中的字符越多得分越多,最后根据得分给出相应的评语。为增加趣味性,字符及其在屏幕上方出现的位置和下落速度都是随机产生的。
      界面设计:新建工程,将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版《键盘编程实例》一文)。