欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载  

    VB课程设计报告打字游戏.doc

    • 资源ID:10395821       资源大小:35.50KB        全文页数:8页
    • 资源格式: DOC        下载积分:4
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要4
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    VB课程设计报告打字游戏.doc

    课程设计题目 打字游戏一 功能:本程序为无声版打字练习:有四个窗体,其中一个为开始窗体frmstart,游戏界面frmplay,还有一个为弹出键盘的界面frmkeyboard,还有一个为察看成绩界面frmscore其中frmstart为启动窗体还有一个模块用来存放全局变量和一个控制字母生成的全局过程 ziti。还有一个文本文件用来储存玩家的信息。二课程详细设计:1)程序开始显示“打字设置”窗口,在“你的姓名”文本框中输入姓名。若未输入姓名就单击“开始练习”或“查看成绩”按钮,则在屏幕上出现一个消息框。在”打字屏幕上随机产生并下落各种字符.若用户在字符落到屏幕底下之前,敲击了键盘上的相应的键,则该字符被“击中”,然后消失。程序根据速度和难度的设置自动计分,分数实时显示在窗口的顶部。计分标准如下:1、慢速+小写字母:打中一个1分2、慢速+大写字母:打中一个2分3、慢速+混合字符:打中一个3分 4、中速+小写字母:打中一个4分5、中速+大写字母:打中一个5分6、中速+混合字符:打中一个6分7、高速+小写字母:打中一个7分8、高速+大写字母:打中一个8分9、高速+混合字符:打中一个9分 所有字符包括大小写字母,数字和符号字符.2)当下落字符中有相同字符时,一次只能打掉一个.如果按了屏幕上没有的字符则扣1分,如果有字符落到屏幕底下则扣10分.3)为了增加游戏的趣味性,可增加背景音乐和打中时的打击声.在此不作要求。4)时间一到则显示用户本次的得分并提示是否继续进行.打字过程中可以按Esc键则中止游戏,返回打字设置窗口.5)打字练习过程中,屏幕的顶部显示已用的时间和当前的分数,按F1功能键则弹出键盘布局窗口以供用户参考.6)单击”查看成绩”按钮,弹出“成绩”对话框,显示当前用户每次的练习时间和成绩.三、程序代码展示Frmstart:Option ExplicitDim strtime As String 得到输入时间文本框的时间Private Sub cmdExit_Click() 退出按钮Unload frmPlay: Unload frmStart: Unload frmScoreEnd SubPrivate Sub cmdScore_Click() 察看成绩按钮Dim int7 As IntegerOpen "score.txt" For Input As 3 Do While Not EOF(3) Input #3, str1, str2, str3 str4 = str1 + " " + str2 + " " + str3 If str1 = frmStart.txtName.Text Then 如果找到则添加到列表框中 frmScore.lstScore.AddItem str4 End If If frmStart.txtName.Text = "" Then 如果搜索内容为空则全部显示 frmScore.lstScore.AddItem str4 End If str1 = "" str2 = "" str3 = "" str4 = "" Loop If frmScore.lstScore.ListCount = 0 Then 如果为空即姓名不存在则显示提示框 int7 = MsgBox("没有您的成绩纪录", 48, "成绩查看") If int7 = 1 Then Unload frmScore End If Else frmScore.Show End IfClose 3End SubPrivate Sub Form_Load() frmStart.lblTime.Caption = NowtxtTime.Text = "1"optSpeed(0).Value = True: optZimu(0).Value = TruetxtName.Text = ""End Sub Private Sub cmdStart_Click() 开始按钮Dim m As IntegerIf frmStart.txtName.Text = "" Then m = MsgBox("请您输入您的姓名", 32, "错误") Exit SubEnd IffrmStart.Visible = FalsefrmPlay.ShowEnd SubPrivate Sub txtTime_Change() 输入游戏时间,默认一分钟Dim int3 As Single 用来在strtime 和inttime 中间转换的一个变量strtime = txtTime.Textint3 = CSng(strtime)inttime = int3 * 60End SubFrmplay:Option ExplicitDim intSecond As IntegerDim intMinute As IntegerPrivate X As Integer 控制爆炸图画的出现和消失Private intend As Integer 控制游戏的结束Private Sub Form_Deactivate()If intend >= inttime Then intend = 0: Timer2.Enabled = False 如果是时间到了以后退出,则往文本文件里面写文件 Open "score.txt" For Append As 1 Write #1, frmStart.txtName.Text, CStr(t), frmStart.lblTime.Caption Close 1 End IfEnd SubPrivate Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)Dim int4 As IntegerIf KeyCode = 27 Then 用户按了ESC int4 = MsgBox("真的要结束练习吗?", 36, "打字练习") If int4 = 6 Then Unload frmPlay: frmStart.Visible = True End IfEnd IfIf KeyCode = 112 Then 用户按了F1 frmKeyboard.Show 1End IfEnd SubPrivate Sub Form_Load()intSecond = 0: intMinute = 0: intend = 0: t = 0Timer2.Enabled = True: Image1.Visible = FalsefrmPlay.WindowState = 2Dim h As Integer, z As Integer 循环变量For z = 0 To 9 标签控件赋初值 lblShow(z).BackColor = frmPlay.BackColor lblShow(z).ForeColor = RGB(Rnd * 255, Rnd * 255, Rnd * 255) lblShow(z).Top = frmPlay.Top - lblShow(z).HeightNext zFor h = 0 To 2 根据速度的设定来控制下落的速度 If frmStart.optSpeed(h).Value = True Then Timer1.Interval = 50 * (3 - h) Call Ziti 随机生成字体 End IfNext hLabel1.BackColor = Frame1.BackColor: Label2.BackColor = Frame1.BackColor: Label3.BackColor = Frame1.BackColorFrame1.Width = frmPlay.Width + 1000End SubPrivate Sub Timer1_Timer() 搜索是否有字母到底RandomizeDim intx As IntegerFor intx = 0 To 9 If lblShow(intx).Top >= frmPlay.Height - lblShow(intx).Height Then t = t 10 有字母到底即扣去十分 If frmStart.optZimu(0).Value = True Then Randomize frmPlay.lblShow(intx).Caption = Chr(Rnd * 25 + 97) End If If frmStart.optZimu(1).Value = True Then Randomize frmPlay.lblShow(intx).Caption = Chr(Rnd * 47 + 65) If Asc(frmPlay.lblShow(intx).Caption) < 97 And Asc(frmPlay.lblShow(intx).Caption) > 90 Then frmPlay.lblShow(intx).Caption = Chr(Rnd * 47 + 65) End If End If If frmStart.optZimu(2).Value = True Then Randomize frmPlay.lblShow(intx).Caption = Chr(Rnd * 57 + 65) End If lblShow(intx).Top = frmPlay.Top - lblShow(intx).Height lblShow(intx).ForeColor = RGB(Rnd * 255, Rnd * 255, Rnd * 255) End If lblShow(intx).Top = lblShow(intx).Top + Rnd * 200Next intx Label3.Caption = "欢迎" & frmStart.txtName.Text & _"您现在的得分是 " & tEnd SubPrivate Sub Timer2_Timer() 控制游戏的结束 Dim int5 As IntegerIf intend >= inttime Then 若大于游戏时间,则退出 int5 = MsgBox("本次练习你的成绩是" & CStr(t) & "分" & Chr(13) & Chr(10) & _ "游戏结束,要继续吗?", 36, "打字练习") If int5 = 6 Then Call Form_Load ElseIf int5 = 7 Then Unload frmPlay: frmStart.Visible = True End IfEnd Ifintend = intend + 1 下面的代码控制窗体顶部时间的显示intSecond = intSecond + 1If intSecond >= 60 ThenintSecond = intSecond - 60: intMinute = intMinute + 1End IffrmPlay.Label1.Caption = CStr(intMinute) & ":" & CStr(intSecond)End SubPrivate Sub form_keypress(keyascii As Integer) Dim inty As Integer 循环变量 For inty = 0 To 9 If keyascii = Asc(lblShow(inty).Caption) Then 生成新的字符 If frmStart.optZimu(0).Value = True Then Randomize frmPlay.lblShow(inty).Caption = Chr(Rnd * 25 + 97) End If If frmStart.optZimu(1).Value = True Then Randomize frmPlay.lblShow(inty).Caption = Chr(Rnd * 25 + 65) End If If frmStart.optZimu(2).Value = True Then Randomize frmPlay.lblShow(inty).Caption = Chr(Rnd * 57 + 65) End If Image1.Visible = True: Image1.Left = lblShow(inty).Left: Image1.Top = lblShow(inty).Top Timer3.Enabled = True lblShow(inty).Top = frmPlay.Top - lblShow(inty).Height 加分 Dim intxunhuan As Integer 循环变量 Dim temp As Integer 循环变量 For intxunhuan = 0 To 2 If frmStart.optSpeed(intxunhuan).Value = True Then For temp = 0 To 2 If frmStart.optZimu(temp) = True Then t = t + 1 + temp + 3 * intxunhuan End If Next End If Next Exit Sub End If Next intyIf inty = 10 Then 若没有则减去一分 t = t - 1End If End SubPrivate Sub timer3_Timer() 控制爆炸图画的出现和消失Dim X As IntegerX = X + 1If X = 1 Then Image1.Visible = False: X = 0End IfEnd SubFrmkeyboard:Option ExplicitPrivate Sub Form_Load()Image1.Picture = LoadPicture("resourceKeyboard.bmp")frmPlay.KeyPreview = False: frmPlay.Timer1.Enabled = False 使键盘出现时,游戏窗体暂停frmPlay.Timer2.Enabled = FalseEnd SubPrivate Sub Form_Unload(Cancel As Integer)frmPlay.KeyPreview = True: frmPlay.Timer1.Enabled = TruefrmPlay.Timer2.Enabled = TrueEnd SubModulel1:Option ExplicitPublic t As Integer 记录分数Public str1 As String, str2 As String, str3 As String, str4 As StringPublic inttime As SinglePublic Sub Ziti() 控制出现字符的种类 Dim a As Integer, b As Integer, c As Integer If frmStart.optZimu(0).Value = True Then For a = 0 To 9 Randomize frmPlay.lblShow(a).Caption = Chr(Rnd * 25 + 97) Next a End If If frmStart.optZimu(1).Value = True Then For b = 0 To 9 Randomize 使得随机 frmPlay.lblShow(b).Caption = Chr(Rnd * 47 + 65) If Asc(frmPlay.lblShow(b).Caption) < 97 And Asc(frmPlay.lblShow(b).Caption) > 90 Then b = b - 1 End If Next b End If If frmStart.optZimu(2).Value = True Then For c = 0 To 9 Randomize frmPlay.lblShow(c).Caption = Chr(Rnd * 57 + 65) Next c End IfEnd Sub四.设计过程中出现的问题由于对程序中涉及的一些书本外的知识,尽管看了资料,但是还是不能应用自如,所以本程序的背景音乐和打击声没有实现.可用Keypress事件检测键入的字符是否正确。判断Esc和F1等控制键或功能键,应该使用Keydown事件.关于这两个所涉及的键码,有一些不懂得的地方,经过翻阅书籍和询问同学,解决了这个问题.还有一些小的细节问题,经过自己不断地阅读程序,把这些小的问题解决了。在编写的过程中由于本人对整个问题缺乏系统性,所以出现了一些逻辑错误,经过同学和我不断的调试,最终完成了程序的设计。五.程序设计小结经验与教训:本程序星级较高,相对较难,因此功能的实现是分块进行的,由于事前没有很好的规划,导致有的功能实现以后,却发现与别的功能相冲突,不得以重新再来,这样反复的删改导致的直接后果是有的变量发现没用了被删掉了以后却没有被删干净,结果有些变量自己也不知道到底有没有用,是干什么用的,归根到底还是自己没有养成良好的编程习惯,变量不经定义就胡乱使用,即使定义了也经常是用什么IJ之类的代替,不具有描述性,结果自己也被搞混了。而且有些东西书上本来就讲的不详细,我却错误的以为是放之天下皆准的真理,结果运行时以为万无一失的东西却总是长长出错,这时才明白什么叫“实践是检验真理的唯一标准”,明白书说的并不是百分之百的正确,要根据实践来修正书本上学到的东西,而且明白实践也是获得经验的一种重要方式。还有就是暴露了自己平时学习的不扎实,有的相关问题老师讲的时候总学的似是而非,考试的时候主要就是凭运气好坏,自己还为自己的学习方法沾沾自喜,觉的无所谓,等到真正运用的时候才发现了问题,平时掌握的似是而非的问题,运用时不是出错就是达不到想要的状态没办法只好临时抱着书死啃。这时才后悔平时没有多下点功夫把知识掌握牢靠了,否则就不会出现现在临时抱佛脚的尴尬局面。自己这种学习状态要是带到走上工作岗位,恐怕是要砸饭碗啦。而且对程序的删改也比较随意,有时根本没有考虑清楚,就把大段的代码删掉,经常是删掉以后才发现原来的考虑不周全,这时却叫天不应,叫地地不灵,没办法只好长叹一声又无耐的把代码重新搞一遍,吸取教训后,对代码的删改不再那么随意了,有时候觉得真的要删了也是先注释掉,然后等运行几遍,确实没有问题了才可以删掉。

    注意事项

    本文(VB课程设计报告打字游戏.doc)为本站会员(土8路)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开