收藏 分销(赏)

VB课程设计-打字游戏.doc

上传人:仙人****88 文档编号:9399061 上传时间:2025-03-24 格式:DOC 页数:15 大小:607KB
下载 相关 举报
VB课程设计-打字游戏.doc_第1页
第1页 / 共15页
VB课程设计-打字游戏.doc_第2页
第2页 / 共15页
点击查看更多>>
资源描述
内容摘要 本有游戏主要针对指法练习,并提供字母和单词两种选择。根据用户自身情况,可以进行速度调节,以达到最佳的练习效果。同时本游戏提供显示时间,得分,正确率和失败个数的功能。当失败个数超过一定个数后,游戏结束并提示是否继续。 目录 内容摘要 1 1功能描述 3 1.1简单模式 3 1.2复杂模式 3 2概要设计 4 3详细设计 5 3.1窗体控件设计 5 3.2各模块功能 6 3.1.1随机产生字母和选取单词函数 6 3.1.2窗体 6 3.1.3开始按钮 7 3.1.4暂停按钮 8 3.1.5退出按钮 8 3.1.6键盘事件 8 3.1.7计时器1 9 3.1.8计时器2 10 3.3程序调试及运行结果 11 3.4效果及存在的问题 13 4心得体会 14 参考文献 15 1功能描述 图1 游戏开始界 1.1简单模式 本模式提供字母练习。当用户运行游戏,选择简单模式后,点击开始按钮开始练习,并开始计时。游戏开始后,随机掉下一些字母,敲击对应键盘,字母消失。如果字母掉落到底部,则掉落个数增加1个。当掉落个数为26时,游戏结束,并提示用户是否继续。游戏过程中按“暂停”按钮暂停有游戏,按“退出”按钮退出游戏。 1.2复杂模式 本模式提供单词练习。当用户运行游戏,选择复杂模式后,点击开始按钮开始练习,并开始计时。游戏开始后,随机掉下一些单词,输入对应单词(如果输错,敲空格清除),并敲空格键,单词消失。如果单词掉落到底部,则掉落个数增加1个。当掉落个数为26时,游戏结束,并提示用户是否继续。游戏过程中按“暂停”按钮暂停有游戏,按“退出”按钮退出游戏。 2概要设计 简单模式 调节速度 开始字母练习 已错过26个,是否继续? 是 否 重新开始游戏 游戏开始游戏 开始界面 运行程序 复杂模式 开始 开始 开始单词练习 调节速度 是 否 重新开始游戏 游戏开始游戏 流程图 游戏过程中可以按“暂停”按钮暂停有游戏,并且停止计时。按“退出”按钮退出游戏 3详细设计 3.1窗体控件设计 图3.1 窗体界面 部分窗体控件及其属性 对象 属性 属性值 Form1 Caption 打字游戏 KeyPreview True HScroll1 Max 160 Min 40 Value 100 表3.1 控件及属性值 3.2各模块功能 3.1.1随机产生字母和选取单词函数 Private Function suiji() '随机产生字母和随机选取单词函数 Dim a As Integer Dim b As String Randomize word = 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 If End Function 3.1.2窗体 Private Sub Form_Load() Text1.Top = -1000 Label6.Caption = "正确率:0" Label4.Caption = "时间 00:00:00" Timer2.Enabled = False Timer1.Enabled = False Label2.BackStyle = 0 Label3.BackStyle = 0 Label4.BackStyle = 0 Label5.BackStyle = 0 Label6.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 Sub 3.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 Sub 3.1.4暂停按钮 Private Sub Command2_Click() '暂停按钮 Timer1.Enabled = False Timer2.Enabled = False End Sub 3.1.5退出按钮 Private Sub Command3_Click() '退出按钮 If MsgBox("确定要退出?", vbYesNo) = vbYes Then MsgBox "得分" & h & "分", , "成绩" '退出提示 Unload Me '关闭窗体 End If End Sub 3.1.6键盘事件 Private Sub Form_KeyPress(KeyAscii As Integer) Dim b As Integer Dim c As Integer If KeyAscii >= 97 And KeyAscii <= 122 Then ci = ci + Chr(KeyAscii) '将输入的单词赋值给空字符串ci End If b = -1 c = -1 If Option1.Value Then '选择简单 For i = 0 To Label1.Count - 1 '遍历所有产生字母 If Label1(i).Caption = Chr(KeyAscii) Then '判断产生的字母和输入的字母是否相等 If Label1(i).Top > b Then '判断字母是否已经落出 c = i End If End If Next Else 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 Next ci = "" End If End If If c > -1 Then Label1(c).Top = -10 '如果输入正确,则将字母标签隐藏到顶部 Label1(c).Caption = suiji '字母标签随机产生字母 h = h + 1 '如果输入正确,则得分加1 Label5.Caption = "当前得分:" & h '显示当前得分 End If End Sub 3.1.7计时器1 Private 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 If Next End Sub 3.1.8计时器2 Private Sub Timer2_Timer() Timer2.Interval = 1000 If (n + h) <> 0 Then Label6.Caption = "正确率:" & h / (n + h) * 100 \ 1 & "%" '显示正确率 End If Static s s = s + 1 Dim miao As String Dim fen As String Dim shi As String If s Mod 60 < 10 Then miao = 0 Else miao = "" End If If (s Mod 3600) \ 60 < 10 Then fen = 0 Else fen = "" End If If s \ 3600 < 10 Then shi = 0 Else shi = "" End If Label4.Caption = "时间 " & shi & s \ 3600 & ":" & fen & (s Mod 3600) \ 60 & ":" & miao & s Mod 60 '显示已用时间 End Sub 3.3程序调试及运行结果 (1)选择复杂模式,按开始按钮 图3.3—1 输入提示界面 (2)按退出按钮,退出提示,提示得分 图3.3—2 退出界面 图3.3—3退出界面 (3)当错过26个时,出现提示 图3.3—4 游戏结束界面 3.4效果及存在的问题 经过一周的努力,基本达到了预期效果,比如说字母练习,单词练习,速度控制等。此外,还添加了时间显示,正确率显示,掉落显示,暂停,退出等功能。但是也存在一些明显的不足。 比如说所练习的单词都是自己临时加入的,词库有限,所以很难用已实际的练习,因此,应该增加自定义增加词库功能。 4心得体会 经过一周的时间,程序终于写好了,颇有成就感。程序的编写并非一帆风顺,其中也遇到也不少困难。 最先遇到的是是单词怎么产生的问题,是将几个字母拼凑起来?但这样有一个致命缺点,产生的不能叫单词,只能叫字符串,因为这样产生的单词大多没有实际意义。经过一段时间的思考,终于想到了解决方法,就是弄一些单词,放到自定义数组里面去,组成一个词库。然后从里面随机选取单词。但这样也是有缺点的,不适合弄太多的单词。 一个问题解决了,接着又遇到了另外一个问题。怎么样让单词消失?想了好久,课本也翻了几遍,没有找到解决方法。后来查找资料,参考别人的代码,找到了一点灵感,让单词消失算法解决了。可是实际操作中出现了新问题,当我敲空格,想让单词消失时,却发现单词没有消失,而是开始按钮在动。 后来请教老师,才知道是焦点没有转移,在开始按钮上,每次敲空格,都会触发开始按钮。焦点怎么转移呢?老师给了增加了一个文本框,让焦点转移到文本框上,我再把文本框隐藏起来,问题得以解决。 这一周马上就过了,虽然有点累,仍有一丝不舍,因为它让我学到了许多。 参考文献 Visual Basic 课程设计 主编 莫德举 夏涛 北京邮电大学出版社 2008年版 15
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服