VB课程设计 打字游戏.doc_第1页
VB课程设计 打字游戏.doc_第2页
VB课程设计 打字游戏.doc_第3页
VB课程设计 打字游戏.doc_第4页
VB课程设计 打字游戏.doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

内容摘要本有游戏主要针对指法练习,并提供字母和单词两种选择。根据用户自身情况,可以进行速度调节,以达到最佳的练习效果。同时本游戏提供显示时间,得分,正确率和失败个数的功能。当失败个数超过一定个数后,游戏结束并提示是否继续。 目录内容摘要11功能描述31.1简单模式31.2复杂模式32概要设计43详细设计53.1窗体控件设计53.2各模块功能63.1.1随机产生字母和选取单词函数63.1.2窗体63.1.3开始按钮73.1.4暂停按钮83.1.5退出按钮83.1.6键盘事件83.1.7计时器193.1.8计时器2103.3程序调试及运行结果113.4效果及存在的问题134心得体会14参考文献151功能描述图1 游戏开始界1.1简单模式本模式提供字母练习。当用户运行游戏,选择简单模式后,点击开始按钮开始练习,并开始计时。游戏开始后,随机掉下一些字母,敲击对应键盘,字母消失。如果字母掉落到底部,则掉落个数增加1个。当掉落个数为26时,游戏结束,并提示用户是否继续。游戏过程中按“暂停”按钮暂停有游戏,按“退出”按钮退出游戏。1.2复杂模式本模式提供单词练习。当用户运行游戏,选择复杂模式后,点击开始按钮开始练习,并开始计时。游戏开始后,随机掉下一些单词,输入对应单词(如果输错,敲空格清除),并敲空格键,单词消失。如果单词掉落到底部,则掉落个数增加1个。当掉落个数为26时,游戏结束,并提示用户是否继续。游戏过程中按“暂停”按钮暂停有游戏,按“退出”按钮退出游戏。2概要设计 简单模式调节速度开始字母练习已错过26个,是否继续?是否重新开始游戏游戏开始游戏开始界面运行程序复杂模式开始开始开始单词练习调节速度是否重新开始游戏游戏开始游戏流程图游戏过程中可以按“暂停”按钮暂停有游戏,并且停止计时。按“退出”按钮退出游戏3详细设计3.1窗体控件设计图3.1 窗体界面部分窗体控件及其属性对象属性属性值Form1Caption打字游戏KeyPreviewTrueHScroll1Max160Min40Value100表3.1 控件及属性值3.2各模块功能3.1.1随机产生字母和选取单词函数Private Function suiji() 随机产生字母和随机选取单词函数Dim a As IntegerDim b As StringRandomizeword = Array(sway, sneak, naked, maple, ample, lough, plasma, tude, plague, pledge, play, prowl, pluckbandit, gangster, commemorate, solar, elipse, luna, lunatic, tumble, mortal, moral, fade, flinch, spout, sprout, spurn, spoil, sparrow, sprain, plasma, mare, malady, glisten, bereave, glimme, rslim, crave, amiable, able, blizzard, lizard, bruise, bromide, place, bale) 存放供练习的单词b = Int(Rnd * (UBound(word) + 1) 产生单词序号a = Int(122 - 97 + 1) * Rnd + 97) 产生97到122之间的整数If Option1.Value Then suiji = Chr(a) 如果选择简单单选框,则函数的返回值为小写字母Else suiji = word(b) 如果选择复杂单选框,则函数的返回值为单词End IfEnd Function3.1.2窗体Private Sub Form_Load()Text1.Top = -1000Label6.Caption = 正确率:0Label4.Caption = 时间 00:00:00Timer2.Enabled = FalseTimer1.Enabled = FalseLabel2.BackStyle = 0Label3.BackStyle = 0Label4.BackStyle = 0Label5.BackStyle = 0Label6.BackStyle = 0 将标签2到6的背景设为透明For i = 0 To Label1.Count - 1 Label1(i).Visible = False 将标签Label1(1)到Label1(5)的初始状态设为不可见 Label1(i).Top = 600 * (i + 1) 设置字母或单词的的位置 Label1(i).Caption = suiji 最初出现的字母或者单词 Label1(i).FontSize = 25 设置字体大小 Label1(i).AutoSize = True 标签大小自动可调 Label1(i).BackStyle = 0 透明Next Label3.Caption = 掉落个数: & n Label5.Caption = 当前得分: & h Label2.ForeColor = RGB(0, 255, 0) Label5.ForeColor = RGB(0, 255, 0) Label3.ForeColor = RGB(0, 255, 0) Label6.ForeColor = RGB(255, 0, 0) Label4.ForeColor = RGB(255, 0, 255) 设置字体颜色End Sub3.1.3开始按钮Public Sub Command1_Click() 开始按钮Dim i%If Option2.Value Then i = MsgBox(输入单词后,请按空格键确认, , 注意) 操作提示End If For i = 0 To Label1.Count - 1 Label1(i).Visible = True Label1(i).Caption = suiji Label1(i).ForeColor = RGB(Rnd * 255, Rnd * 255, Rnd * 255) 随机产生字母,单词,颜色随机Next Timer1.Enabled = True Timer2.Enabled = True HScroll1.Enabled = False Option1.Enabled = False Option2.Enabled = False Command1.Enabled = False 将计时器,速度调节,难度选择和开始按钮禁用 Text1.SetFocus 将焦点转移到文本框End Sub3.1.4暂停按钮Private Sub Command2_Click() 暂停按钮Timer1.Enabled = FalseTimer2.Enabled = FalseEnd Sub3.1.5退出按钮Private Sub Command3_Click() 退出按钮If MsgBox(确定要退出?, vbYesNo) = vbYes Then MsgBox 得分 & h & 分, , 成绩 退出提示 Unload Me 关闭窗体End IfEnd Sub3.1.6键盘事件Private Sub Form_KeyPress(KeyAscii As Integer)Dim b As IntegerDim c As IntegerIf KeyAscii = 97 And KeyAscii b Then 判断字母是否已经落出 c = i End If End If NextElse If KeyAscii = 32 Then 如果敲了空格,则进行单词比较操作 For i = 0 To Label1.Count - 1 遍历所有产生字母 If Label1(i).Caption = ci Then 判断产生的单词和输入的单词是否相等 If Label1(i).Top b Then 判断字母是否已经落出 c = i End If End If Nextci = End If End IfIf c -1 ThenLabel1(c).Top = -10 如果输入正确,则将字母标签隐藏到顶部Label1(c).Caption = suiji 字母标签随机产生字母h = h + 1 如果输入正确,则得分加1Label5.Caption = 当前得分: & h 显示当前得分End IfEnd Sub3.1.7计时器1Private Sub Timer1_Timer()For i = 0 To Label1.Count - 1 Label1(i).Top = Label1(i).Top + HScroll1.Value 控制字母,单词移动,以及移动速度 If Label1(i).Top Form1.Height Then n = n + 1 记录掉落个数 Label3.Caption = 掉落个数: & n Label1(i).Top = -10 Randomize Label1(i).ForeColor = RGB(Rnd * 255, Rnd * 255, Rnd * 255) 产生颜色 End If If n = 26 Then If MsgBox(已经错过 & n & 个,重新开始?, vbYesNo) = vbYes Then 提示框 Form_Load Form1.Command1_Click Else Form_Load 控制重新游戏还是结束游戏 End If End IfNextEnd Sub3.1.8计时器2Private Sub Timer2_Timer()Timer2.Interval = 1000If (n + h) 0 Then Label6.Caption = 正确率: & h / (n + h) * 100 1 & % 显示正确率End IfStatic s s = s + 1Dim miao As StringDim fen As StringDim shi As StringIf s Mod 60 10 Then miao = 0Else miao = End IfIf (s Mod 3600) 60 10 Then fen = 0Else fen = End IfIf s 3600 10 Then shi = 0Else shi = End If Label4.Caption = 时间 & shi & s 3600 & : & fen & (s Mod 3600) 60 & : & miao & s Mod 60 显示已用时间End Sub3.3程序调试及运行结果(1)选择复杂模式,按开始按钮图3.31 输入提示界面(2)按退出按钮,退出提示,提示得分图3.32 退出界面图3.33退出界面(3)当错过26个时,出现提示图3.34 游戏结束界面3.4效果及存在的问题经过一周的努力,基本达到了预期效果,比如说字母练习,单词练习,速度控制等。此外,还添加了时间显示,正确率显示,掉落显示,暂停,退出等功能。但是也存在一些明显的不足。 比如说所练习的单词都是自己临时加入的,词库有限,所以很难用已实际的练习,因此,应该增加自定义增加词库功能。4心得体会经过一周的时间,程序终于写好了,颇有成就感。程序的编写并非一帆风顺,其中也遇到也不少困难。最先遇到的是是单词怎么产生的问题,是将几个字母拼凑起来?但这样有一个致命缺点,产生的不能叫单词,只能叫字符串,因为这样产生的单词大多没有实际意义。经过一段时间的思考,终于想到了解决方法,就是弄一些单词,放到自定义数组里面去,组成一个词库。然后从里面随机选取单词。但这样也是有缺点的,不适合弄太多的单词。一个问题解决了,接着又遇到了另外一个问题。怎么样让单词消失?想了好久,课本也翻了几遍,没有找

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论