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

上传人:土8路 文档编号:10395821 上传时间:2021-05-14 格式:DOC 页数:8 大小:35.50KB
返回 下载 相关 举报
VB课程设计报告打字游戏.doc_第1页
第1页 / 共8页
VB课程设计报告打字游戏.doc_第2页
第2页 / 共8页
VB课程设计报告打字游戏.doc_第3页
第3页 / 共8页
VB课程设计报告打字游戏.doc_第4页
第4页 / 共8页
VB课程设计报告打字游戏.doc_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《VB课程设计报告打字游戏.doc》由会员分享,可在线阅读,更多相关《VB课程设计报告打字游戏.doc(8页珍藏版)》请在三一文库上搜索。

1、课程设计题目 打字游戏一 功能:本程序为无声版打字练习:有四个窗体,其中一个为开始窗体frmstart,游戏界面frmplay,还有一个为弹出键盘的界面frmkeyboard,还有一个为察看成绩界面frmscore其中frmstart为启动窗体还有一个模块用来存放全局变量和一个控制字母生成的全局过程 ziti。还有一个文本文件用来储存玩家的信息。二课程详细设计:1)程序开始显示“打字设置”窗口,在“你的姓名”文本框中输入姓名。若未输入姓名就单击“开始练习”或“查看成绩”按钮,则在屏幕上出现一个消息框。在”打字屏幕上随机产生并下落各种字符.若用户在字符落到屏幕底下之前,敲击了键盘上的相应的键,则

2、该字符被“击中”,然后消失。程序根据速度和难度的设置自动计分,分数实时显示在窗口的顶部。计分标准如下:1、慢速+小写字母:打中一个1分2、慢速+大写字母:打中一个2分3、慢速+混合字符:打中一个3分 4、中速+小写字母:打中一个4分5、中速+大写字母:打中一个5分6、中速+混合字符:打中一个6分7、高速+小写字母:打中一个7分8、高速+大写字母:打中一个8分9、高速+混合字符:打中一个9分 所有字符包括大小写字母,数字和符号字符.2)当下落字符中有相同字符时,一次只能打掉一个.如果按了屏幕上没有的字符则扣1分,如果有字符落到屏幕底下则扣10分.3)为了增加游戏的趣味性,可增加背景音乐和打中时的

3、打击声.在此不作要求。4)时间一到则显示用户本次的得分并提示是否继续进行.打字过程中可以按Esc键则中止游戏,返回打字设置窗口.5)打字练习过程中,屏幕的顶部显示已用的时间和当前的分数,按F1功能键则弹出键盘布局窗口以供用户参考.6)单击”查看成绩”按钮,弹出“成绩”对话框,显示当前用户每次的练习时间和成绩.三、程序代码展示Frmstart:Option ExplicitDim strtime As String 得到输入时间文本框的时间Private Sub cmdExit_Click() 退出按钮Unload frmPlay: Unload frmStart: Unload frmScor

4、eEnd 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 如果搜索内容为空则全部

5、显示 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 = Nowtx

6、tTime.Text = 1optSpeed(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 in

7、t3 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

8、 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 = MsgB

9、ox(真的要结束练习吗?, 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

10、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 *

11、(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

12、.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).Capt

13、ion) 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 *

14、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) & _ 游戏结束,要继续吗?,

15、 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) &

16、 : & 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

17、).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

18、= 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 En

19、d 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

20、.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 记录分数Publ

21、ic 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 frmStar

22、t.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) 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) Nex

23、t c End IfEnd Sub四.设计过程中出现的问题由于对程序中涉及的一些书本外的知识,尽管看了资料,但是还是不能应用自如,所以本程序的背景音乐和打击声没有实现.可用Keypress事件检测键入的字符是否正确。判断Esc和F1等控制键或功能键,应该使用Keydown事件.关于这两个所涉及的键码,有一些不懂得的地方,经过翻阅书籍和询问同学,解决了这个问题.还有一些小的细节问题,经过自己不断地阅读程序,把这些小的问题解决了。在编写的过程中由于本人对整个问题缺乏系统性,所以出现了一些逻辑错误,经过同学和我不断的调试,最终完成了程序的设计。五.程序设计小结经验与教训:本程序星级较高,相对较难,因

24、此功能的实现是分块进行的,由于事前没有很好的规划,导致有的功能实现以后,却发现与别的功能相冲突,不得以重新再来,这样反复的删改导致的直接后果是有的变量发现没用了被删掉了以后却没有被删干净,结果有些变量自己也不知道到底有没有用,是干什么用的,归根到底还是自己没有养成良好的编程习惯,变量不经定义就胡乱使用,即使定义了也经常是用什么IJ之类的代替,不具有描述性,结果自己也被搞混了。而且有些东西书上本来就讲的不详细,我却错误的以为是放之天下皆准的真理,结果运行时以为万无一失的东西却总是长长出错,这时才明白什么叫“实践是检验真理的唯一标准”,明白书说的并不是百分之百的正确,要根据实践来修正书本上学到的东

25、西,而且明白实践也是获得经验的一种重要方式。还有就是暴露了自己平时学习的不扎实,有的相关问题老师讲的时候总学的似是而非,考试的时候主要就是凭运气好坏,自己还为自己的学习方法沾沾自喜,觉的无所谓,等到真正运用的时候才发现了问题,平时掌握的似是而非的问题,运用时不是出错就是达不到想要的状态没办法只好临时抱着书死啃。这时才后悔平时没有多下点功夫把知识掌握牢靠了,否则就不会出现现在临时抱佛脚的尴尬局面。自己这种学习状态要是带到走上工作岗位,恐怕是要砸饭碗啦。而且对程序的删改也比较随意,有时根本没有考虑清楚,就把大段的代码删掉,经常是删掉以后才发现原来的考虑不周全,这时却叫天不应,叫地地不灵,没办法只好长叹一声又无耐的把代码重新搞一遍,吸取教训后,对代码的删改不再那么随意了,有时候觉得真的要删了也是先注释掉,然后等运行几遍,确实没有问题了才可以删掉。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


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