模拟TT英文打字程序的开发

(整期优先)网络出版时间:2009-09-19
/ 2

模拟TT英文打字程序的开发

万义璋陈磊

万义璋,陈磊

(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.