万义璋,陈磊
(1.南昌市市政工程管理处,江西南昌330046;2.江西经济管理干部学校,江西南昌331700)
作者简介:万义璋,南昌市市政工程管理处。
摘要:本文介绍了在VisnalBasic6.0环境中模拟TT英文打字软件开发英文打字程序,结合windows系统将主要打字功能实现,为理解打字软件设计思想,开发新的打字软件提供参考。
关键词:模拟;TT;英文打字;程序开发
TT打字软件是一款很老的键盘练习软件,通过这个软件,初学者可以很快地进入学习的角色,练习虽然枯燥,但对打字速度的不断追求是能激发练习者不断进步的上进心的。至今我们都不能忘记这个软件当时给我们带来的巨大的帮助与惊喜,在打字软件满天飞的年代,仍然有爱好者在使用着它,安徽科技学院第四届英语文化节还在使用TT英文打字软件举行打字比赛。
这样的一款软件给几代人留下了深刻的印象,界面简洁、操作方便、阶段式练习等都给后续的打字软件指引了发开的方向。虽然是一个在DOS环境下运行的软件,但是我们可以在windows下模拟TT软件开发一个英文打字程序,了解这款老的软件打字的原理及设计的思想。
模拟采用VisualBasic6.0开发工具,掌握程序设计的基础即可开发。
1界面设计
为适合图形化操作界面,我们将TT软件的部分功能制作成菜单,方便操作,如图3。速度:慢、中、快;难度:易、适中、难;练习时间:1分钟、3分钟、5分钟;重新开始。
2设计思路
①英文字母随机产生:使用动态产生标签控件数组,Rnd随机函数产生英文字母的ASCII,通过Chr()函数转换为英文字母,根据难度的选择,调节产生的英文字母的ASCII,增加更多的字符,如大小写混合,以提高难度;同时记录产生的字母个数,最后作为报告的数字;②英文字母出现的位置随机:使用Rnd随机函数控制英文字母的左边距在窗体的宽度内的随机出现,并使用计时器控件控制英文字母出现的时间间隔;③英文字母下落:使用计时器控件,控制英文字母的高度,一定的时间间隔英文字母的上边距增加;计时器的时间间隔越短,则字母下落的越快,这样来调节打字的速度;④击打英文字母:在窗体的Keypress事件中对每次的击键进行判断,击打正确的字母呈绿色显示,并记录正确的数目,最后作为报告的数字,超过窗体下落线的字母消失。⑤练习时间记录:使用计时器给练习时间计时,默认情况为1分钟的练习时间,根据选择的练习时间,调节计时器的工作时间,并控制字母停止下落与产生。⑥打字报告:练习时间结束后,提示正确率。
3关键代码
3.1定义窗体级变量
DimiAsInteger'作为产生字母的索引值
DimlAsInteger'记录消失的字母的索引值
DimmAsInteger'记录时间
DimnAsInteger'记录击中的字母个数
DimSHIJIANAsInteger
3.2计时器控件不同的作用
'计时器1控制下落
PrivateSubTimer1_Timer()
DimjAsInteger
Forj=0Toi'从第一个字母到当前产生的字母,全部都下落
IfLabel3(j).Top<Line3.Y1Then'以下落线Line3为标准,没有超过线的字母高度增加
Label3(j).Top=Label3(j).Top+100
Else
Label3(j).Visible=False'超过线的字母在窗体上消失
l=j
EndIf
Next
EndSub
'计时器2产生字母
PrivateSubTimer2_Timer()
'-------------------------------------------------“难度”菜单选择“易”、“中”时只产生小写字母
IfYY(2).Checked=FalseThen'YY(2)对应“难度”菜单的“难”
i=i+1
LoadLabel3(i)'加载新的标签控件
Label3(i).Left=Rnd*Form1.ScaleWidth'新标签的左边距控制在窗体的可用宽度内
Label3(i).Top=480
Label3(i).ForeColor=RGB(255,255,255)
Label3(i).Visible=True
Label3(i).Caption=Chr(Int(Rnd*26)+97)'新标签上的标题为随机产生的字母,此处产生
'小写字母
Else
'-----------------------------------------------“难度”菜单选择“难”时产生大小写混合字母与字符
i=i+1
LoadLabel3(i)
Label3(i).Left=Rnd*Form1.ScaleWidth
Label3(i).Top=480
Label3(i).ForeColor=RGB(255,255,255)
Label3(i).Visible=True
Label3(i).Caption=Chr(Int(Rnd*57)+65)
EndIf
EndSub
'计时器3控制练习的时间
PrivateSubTimer3_Timer()
Ifm<SHIJIANThen'SHIJIAN变量的值为“练习时间”菜单的时间值,默认是1分钟
m=m+1
Else'时间到,所有3个计时器控件停止工作,并给出打字的报告
Timer1.Enabled=False
Timer2.Enabled=False
Timer3.Enabled=False
MsgBox"产生的字母数:"&i+1&vbCrLf&"击中的字母数:"&n&vbCrLf&"正确率:"&(n/(i+1))*100&"%"
EndIf
EndSub
3.3窗体的KeyPress事件
'判断用户键盘输入的字母是否正确,输入正确字母显示为绿色
PrivateSubForm_KeyPress(KeyAsciiAsInteger)
DimkAsInteger
Fork=lToi
IfChr(KeyAscii)=Label3(k).CaptionAndLabel3(k).ForeColor=RGB(255,255,255)Then
Label3(k).ForeColor=vbGreen
n=n+1
ExitSub
EndIf
Nextk
EndSub
3.4窗体初始化与开始
PrivateSubForm_Load()
Randomize'设置标签控件数组的第一个元素,作为产生新元素模板
Label3(0).Left=Rnd*Form1.ScaleWidth
Label3(0).Caption=Chr(Int(Rnd*26)+97)
SHIJIAN=60
KK(0).Checked=True'速度、难度、练习时间菜单默认选第一项
FF(0).Checked=True
YY(0).Checked=True
Timer2.Enabled=False'窗体加载时各计时器控件未开始工作
Timer1.Enabled=False
Timer3.Enabled=False
i=0'各变量初始值为零
m=0
l=0
n=0
EndSub
“开始”菜单
PrivateSubkaishi_Click()
DimyAsInteger
Fory=1Toi
UnloadLabel3(y)'卸载掉已产生的标签控件,但保留Label3(0)作为模板
Nexty
Timer2.Enabled=True
Timer1.Enabled=True
Timer3.Enabled=True
i=0'各变量清零
m=0
l=0
n=0
Randomize
Label3(0).Left=Rnd*Form1.ScaleWidth
Label3(0).Top=480
Label3(0).Caption=Chr(Int(Rnd*26)+97)
Label3(0).ForeColor=RGB(255,255,255)
EndSub
4结语
TT打字软件在现在看来是款过时的软件,被大多数人遗忘,但是旧的东西也有值得我们学习、借鉴的地方,只要我们理解它的原理及思想,就可以开发出各种各样适合现在初学者使用的打字软件,这样我们就会有进步,当然有兴趣的读者可以在增加难度,比如背景音乐,动画效果或者游戏功能等。
参考文献:
[1]徐红.VisualBasic可视化程序设计.北京:人民邮电出版社,2006.
[2]刘炳文.VisualBasic程序设计教程.北京:清华大学出版社,2006.