VB课程设计报告打字练习.docx
- 文档编号:849234
- 上传时间:2022-10-13
- 格式:DOCX
- 页数:12
- 大小:20.06KB
VB课程设计报告打字练习.docx
《VB课程设计报告打字练习.docx》由会员分享,可在线阅读,更多相关《VB课程设计报告打字练习.docx(12页珍藏版)》请在冰豆网上搜索。
VB课程设计报告打字练习
VISUALBASIC
课程设计报告
题目:
打字练习
姓名:
***
学号:
班级:
1题目介绍
在计算机及其它数码产品日益普及的今天,人们使用键盘应像使用笔写字一样熟练。
进行打字练习是熟悉键盘并提高打字速度的豪放法。
本题目要求编制一个打字练习游戏,是用户在游戏过程中练习指法。
2设计过程中用到的知识点
(1)控件数组
(2)键盘事件处理(3)文本文件的读写(4)多模块程序设计
(5)随机值的生成
3课题要求和承担的任务
(1)游戏开始时出现“打字设置”窗口,在“您的姓名”文本框中输入用户名。
若未输入名字,就点击“开始练习”与“查看成绩”按钮,则提示用户输入姓名。
若未输入时间,就点击“开始练习”与“查看成绩”按钮,则提示用户输入时间。
在“打字设置”窗口可以设置打字速度和难度,速度决定字母下落的快慢,共分高,中,低速三档。
难度等级也分为三档:
小写字母,大写字母,所有混合(字母,数字和符号)
(2)选择速度和难度之后,单击“开始练习”按钮后,主页面以全屏方式显示。
根据难度的设置,屏幕上随即产生并落下各种字符。
若用户在字符落到屏幕底部之前敲击了相应的键盘键,则该字符被“击中”后消失,击中时在字符位置上显示一个爆炸的效果。
程序根据速度和难度的不同自动进行计分,分数实时地显示在主界面的顶部。
计分标准为:
1,慢速+小写字母:
打中一个1分
2,慢速+大写字母:
打中一个2分
3,慢速+混合字符:
打中一个3分
4,中速+小写字母:
打中一个4分
5,中速+大写字母:
打中一个5分
6,中速+混合字符:
打中一个6分
7,高速+小写字母:
打中一个7分
8,高速+大写字母:
打中一个8分
9,高速+混合字符:
打中一个9分
(3)打字前可以选择打字的时间,时间一到弹出消息框显示用户本次练习得分,并提示是否继续练习,如果选“否”,返回“打字设置”窗口。
用户的成绩被保存在“SCORE.TXT”文件中,供以后查询。
(4)当下落字符中有相同字符时,一次只能打掉一个
(5)在打字过程中,可以按ESC键中止游戏,返回打字设置窗口。
但游戏的成绩并不保存。
(6)打字过程中如果按F1功能键,弹出键盘布局窗口供用户参考,显示该窗口时主窗口的字符暂停下落,关闭此窗口游戏继续进行。
(7)在“打字设置”窗口中,点击“查看成绩”按钮,显示当前用户的历次练习的成绩和时间。
(8)要求程序运行时将各个字符均匀地分布占满屏幕宽度。
4程序关键代码
frmSet界面代码
OptionExplicit'强制变量声明
PrivateSubForm_Load()
Label2.Caption=Now()
EndSub
PrivateSubcmdPlay_Click()
IftxtName.Text=""Then
MsgBox"您还没有输入姓名。
",32,"打字设置"
txtName.SetFocus
ExitSub
EndIf
IfText1.Text=""Then
MsgBox"您还没有输入时间。
",32,"打字设置"
Text1.SetFocus
ExitSub
EndIf
games.Show
games.deadtime=Val(Text1.Text)*60
Me.Hide
EndSub
PrivateSubcmdScore_Click()
Dimpd1AsPersonData
Dimpd2AsPersonData
DimstrAsString
DimstrFindAsBoolean
pd1.name=txtName.Text
IfDir(App.Path&"\Score.txt")=""Then'测试一个指定的路径下是否有指定的文件或文件夹
MsgBox"文件不存在!
",48,"成绩查看"
ExitSub
Else
OpenApp.Path&"\Score.txt"ForInputAs#1
IftxtName.Text=""Then'读取成绩
DoWhileNotEOF
(1)
Input#1,pd2.name,pd2.score,pd2.time'读入值赋给相应的变量
strFind=True
Grade.Text1.Text=Grade.Text1.Text&pd2.name&Space
(2)&pd2.score&"分"&Space
(2)&pd2.time&Chr(13)&Chr(10)
Loop
Else
DoWhileNotEOF
(1)
Input#1,pd2.name,pd2.score,pd2.time
Ifpd2.name=pd1.nameThen
strFind=True
Grade.Text1.Text=Grade.Text1.Text&pd2.name&Space
(2)&pd2.score&"分"&Space
(2)&pd2.time&Chr(13)&Chr(10)
EndIf
Loop
EndIf
Close#1
IfstrFind=TrueThen
Grade.Show
Me.Hide
Else
MsgBox"没有您的成绩记录!
",48,"成绩查看"
EndIf
EndIf
EndSub
PrivateSubcmdExit_Click()
UnloadMe
EndSub
PrivateSubForm_Unload(CancelAsInteger)
Unloadgames
EndSub
PrivateSubFrame2_DragDrop(SourceAsControl,XAsSingle,YAsSingle)
EndSub
PrivateSubLabel2_Click()
EndSub
Games界面代码
OptionExplicit
DimsecondAsInteger
PublicdeadtimeAsInteger
PrivateSubForm_KeyDown(KeyCodeAsInteger,ShiftAsInteger)
IfKeyCode=vbKeyF1Then
Timer1.Enabled=False
frmKB.Show1
Timer1.Enabled=True
EndIf
EndSub
PrivateSubForm_Load()
DimiAsInteger
Fori=1To9
LoadlblLetter(i)
Next
Fori=0To9
lblLetter(i).Left=Screen.Width/11*(i+1)
lblLetter(i).Top=0
lblLetter(i).Visible=True
Next
Start
EndSub
PrivateSubForm_KeyPress(KeyAsciiAsInteger)
DimiAsInteger
Fori=0TolblLetter.Count-1
IfChr(KeyAscii)=lblLetter.Item(i).CaptionThen'有匹配字符
ScoreCount
imgExplode.Left=lblLetter.Item(i).Left
imgExplode.Top=lblLetter.Item(i).Top
imgExplode.Visible=True
Timer2.Enabled=True
lblLetter.Item(i).Top=0
Letter(i)
Label2.Caption=frmSet.txtName.Text&",你现在的得分是:
"&TotalScore&"分"
ExitSub
EndIf
Next
IfKeyAscii=27Then
IfMsgBox("真的要结束练习吗?
",vbYesNo+vbQuestion,"打字练习")=vbYesThen
UnloadMe
frmSet.Visible=True
EndIf
EndIf
TotalScore=TotalScore-1
Label2.Caption=frmSet.txtName.Text&",你现在的得分是:
"&TotalScore&"分"
EndSub
PrivateSubImage1_Click()
EndSub
PrivateSubTimer1_Timer()
DimiAsInteger
Fori=0TolblLetter.Count-1
Randomize
Speed(i)
Next
Label2.Caption=frmSet.txtName.Text&",你现在的得分是:
"&TotalScore&"分"
EndSub
PrivateSubTimer2_Timer()
DimiAsInteger
Fori=0TolblLetter.Count-1
IflblLetter.Item(i).Top<0OrlblLetter.Item(i).Top>Me.HeightThen
Letter(i)
EndIf
Next
imgExplode.Visible=False
Timer2.Enabled=False
EndSub
PrivateSubTimer3_Timer()
DimpersonAsPersonData
second=second+1
lblTime=second\60&":
"&secondMod60
Ifsecond>=deadtimeThen
person.name=frmSet.txtName.Text
person.score=TotalScore
person.time=frmSet.Label2.Caption
OpenApp.Path&"\Score.txt"ForAppendAs#1
Write#1,person.name,person.score,person.time
Close1
IfMsgBox(frmSet.txtName.Text&",本次练习您的得分是"&TotalScore&"分。
"&Chr(13)&Chr(10)&"游戏结束,继续吗?
",vbYesNo+vbQuestion,"打字练习")=vbYesThen
TotalScore=0
second=0
Label2.Caption=frmSet.txtName.Text&",你现在的得分是:
"&Total
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VB 课程设计 报告 打字 练习