许多初学电脑的人,都是从学习打字开始的。但一开始 对键盘还不太熟悉,连26 个字母的键位都分不清,只好用 手指一个字母一个字母地敲。为了能使这些初学者更快的掌 握键位,又使他们练习起来不那么枯燥,我用VB编写了这 个英文打字练习程序。虽然功能非常简单,但相信对于那些 要练习打字的初学者应该还是有些帮助的。 程序设计思想是这样的: 让随机生成的英文字母从屏幕 上方雨点似的坠落,这时你就可以敲击键盘上的相应字母按 键将其击落,同时用声音提示是否输入正确。在规定的时间 内,击中的字符越多、准确率越高,得分就越多。 下面我们进行程序设计。首先新建一个工程,将窗体 Form1的尺寸调整好,不要太大,由于字母出现位置是随机 产生的,练习久了,眼睛容易疲劳。控件布局及界面设计如 图 1 所示: 三个Label控件中,lbl_letter的Caption属性为"",用 于显示下落的随机字符,lbl_score用来显示成绩,lbl_time 用来显示倒计时的时间。两个 ButtonCommand 控件中, Command1 的 Caption 属性设为“开始”,Command2 的 Caption属性设为“退出”。两个定时器控件中,Timer1控 制字符下落,Timer2控制倒计时。并找两个声音文件right. wav,wrong.wav复制到程序工程目录下作为触发音效。 下面是程序的源代码: Option Explicit Dim speed, right, wrong, keynum As Integer ’定义速度,正确次 数,错误次数,击键次数 Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long Private Const SND_ASYNC = &H1 Dim rtn As Long
Sub letterInit() ’初始化每个字母 lbl_letter.Caption = Chr(Int(Rnd * 26) + 97) ’ 随机产生字 母,如果要产生大写字母只要把 97 改成 65 即可 speed = Int(Rnd * 100 + 200) lbl_letter.Left = Int(Rnd * (Form1.Width - lbl_letter.Width)) ’随机产生字母出现的位置 lbl_letter.Top = lbl_score.Height End Sub
Private Sub Command1_Click() letterInit lbl_score.Caption = "成绩: " & 0 & " 分" & " 错误: " & 0 & " 个" & " 正确率: " & 0 & "%" Timer1.Enabled = True ’启动定时器 Timer2.Enabled = True Timer1.Interval = 100 Timer2.Interval = 1000
’ 隐藏命令按钮 Command1.Visible = False Command2.Visible = False lbl_time.Caption = 120 & " 秒 " End Sub
Private Sub Command2_Click() Unload Me End Sub
Private Sub Form_KeyPress(KeyAscii As Integer) keynum = keynum + 1
If Chr(KeyAscii) = lbl_letter.Caption Then ’判断所按键位是 否与产生的字母相符 letterInit rtn = sndPlaySound(App.Path & "\right.wav", SND_ASYNC) right = right + 1 Else rtn = sndPlaySound(App.Path & "\wrong.wav", SND_ASYNC) wrong = wrong + 1 End If lbl_score.Caption = "成绩: " & right & "分" & " 错误: " & wrong & " 个" & " 正确率: " & Int(right / keynum * 100) & "%"
If KeyAscii = 27 Then Timer1.Enabled = False Timer2.Enabled = False lbl_score.BackColor = vbYellow lbl_score.Caption = "成绩: " & right & "分" & " 错 误: " & wrong & " 个" & " 正确率: " & Int(right / keynum * 100) & "%" & " 按任意键继续 " Else lbl_score.BackColor = vbGreen Timer1.Enabled = True Timer2.Enabled = True End If End Sub
|