vb课程设计报告《打字游戏》-.pdf
VB程序设计课程设计任务书题目:打字游戏任务与要求:编制一个打字练习游戏程序,使用户在游戏过程中进行指法练习。要求程序能完整运行。时间:2012 年 2 月 15 日 至 2012 年 3 月 18 日 共 4 周学生姓名:王凯学 号:1103860333 专业:化工与制药大类指导教师:宋斌2012 年 4 月 14 日第一章 课程设计目的根据课堂讲授内容,学生做相应的自主练习,消化课堂所讲解的内容;通过做课程设计积累调试VB程序的经验;通过完成课程设计中的编程题,逐渐培养学生的编程能力、用计算机解决实际问题的能力。本程序设计主要锻炼了对于控件数组,多模块程序设计,键盘事件处理,随机数的生成,文本文件读写,声音的播放。第二章 课程设计的要求题目介绍:在计算机普及的今天,人们使用键盘已变的更加频繁,为了使打字变得更加熟悉和进一步提高打字速度。本题目要求编写一个打字练习游戏程序,使用户在游戏过程中进行执法练习。课程设计功能要求:程序开始时在打字游戏设置窗口中输入用户名,并根据设置窗口调整练习难度与打字速度。在未输入姓名时单击查看成绩可查询历史成绩。选择好速度与难度之后,单击开始练习按钮。屏幕会随机产生并落下各种字符。在落到屏幕底部之前,击中字符消失同时产生爆炸声,程序根据速度和难度的设置自动记录分数并显示在窗口顶部。为增加趣味性,在程序中增加背景音乐和打中时打击声。并BackMusic.mid 文件作为控制打字练习的时间长度,打字练习过程中,屏幕的顶部显示已用的时间和当前的分数,如果按 F1 功能键,弹出键盘布局窗口,音乐暂停;关闭此窗口,游戏继续进行。.第三章 课程设计报告内容一打字游戏界面主窗体及自述文件界面:打字游戏的部分代码:产生随机大小写字母编写代码Public Sub Letter(n As Integer)根据选择产生英文字母If frmSet.Lowercase.Value Then j=Int(Rnd*26+97)产生小写字母ElseIf frmSet.Uppercase.Value Then If n Mod 2=0 Then 产生大小写混合字母j=Int(Rnd*26+65)Else j=Int(Rnd*26+97)End If ElseIf frmSet.Mixcase.Value Then j=Int(Rnd*79+48)产生混合字母End If frmGame.lblLetter.Item(n).Caption=Chr(j)frmGame.lblLetter.Item(n).ForeColor=RGB(Rnd*254,Rnd*254,Rnd*254)End Sub 根据不同难度产生不同下降速度Public Sub Speed(n As Integer)根据选择产生不同的速度If frmSet.LSpeed.Value Then frmGame.lblLetter.Item(n).Top=frmGame.lblLetter.Item(n).Top+40 ElseIf frmSet.MSpeed.Value Then frmGame.lblLetter.Item(n).Top=frmGame.lblLetter.Item(n).Top+80 选择不同速度ElseIf frmSet.HSpeed.Value Then frmGame.lblLetter.Item(n).Top=frmGame.lblLetter.Item(n).Top+120 End If If frmGame.lblLetter.Item(n).Top frmGame.Height Then 遗漏扣除分数frmGame.lblLetter.Item(n).Top=0 TotalScore=TotalScore-10 Letter(n)End If End Sub 窗体加载Private Sub Command1_Click()frmSet.ShowUnload Me End Sub 文本的读写编码Private Sub cmdScore_Click()Dim pd1 As PersonData Dim pd2 As PersonData Dim str As String Dim strFind As Boolean pd1.name=txtName.Text If Dir(App.Path&Score.txt)=Then MsgBox 文件不存在!,48,成绩查看 Exit Sub Else Open App.Path&Score.txt For Input As#1 If txtName.Text=Then Do While Not EOF(1)判断文件号是否为文件尾Input#1,pd2.name,pd2.score,pd2.time strFind=True frmGrade.Text1.Text=frmGrade.Text1.Text&pd2.name&Space(2)&pd2.score&分&Space(2)&pd2.time&Chr(13)&Chr(10)Loop Else Do While Not EOF(1)Input#1,pd2.name,pd2.score,pd2.time 查找历史成绩If pd2.name=pd1.name Then strFind=True frmGrade.Text1.Text=frmGrade.Text1.Text&pd2.name&Space(2)&pd2.score&分&Space(2)&pd2.time&Chr(13)&Chr(10)End If Loop End If Close#1 If strFind=True Then frmGrade.ShowMe.Hide Else MsgBox 没有您的成绩记录!,48,成绩查看 End If End If End Sub 动态数组Private Sub Form_KeyPress(KeyAscii As Integer)Dim i As Integer,m As Integer,nTop As Integer Dim shotted()As Integer Dim shottednum As Integer 游戏中的两个问题:第四章总结及个人心得体会综合分析,本程设计有2 个难点:(1)随机字符的生成这需要先建立控件数组,还有应该定义数组记录每个字符的速度和颜色,还要用随机函数使之具有不同的颜色。(2)背景音乐以及打中字符产生的打击声的程序编写。存在的不足:(2)打字游戏中还有一个难点就是改变各个字符下降的运动速度,在我编写时感觉不好编写,很不幸的发现所有下降速度一致。还有没有做到书上所说的插入背景音乐,这一点让我感到有点小遗憾心得及体会:通过本次的 v b 程序设计,是我对课程有了进一步的了解,使自己的上级能力有了大幅度提升,这个游戏经历了很多次改动,当然每次改动都有很大的提高,每次改动都少了很多小问题,现在所看到的程序给我开始时设计的草稿版本在很多地方可以说已经大不相同,还有在这个程序中我做了一下尝试优化了定时器的控件使代码长度尽量少,在此期间也阅读了若干资料,我还是尽量的做到了最好,同时也感觉到做程序并不像想象中那么有趣和美好,也是有很多的困难和挫折,但是在老师和同学帮助下在程序成功运行的时候心中那种喜悦之情让我感觉到这一切都是值得的。