vb课程设计报告《打字游戏》

合集下载

VB打字设计报告

VB打字设计报告

打字程序设计报告学院班级学号姓名成绩一、设计思路1.要达到的目的①编写控制菜单,实现主要功能;②两个产生字母的Label放置在Frame上③在标签上随机出现字母,字母位置必须在Frame或Picture内④根据级别的不同,产生的字母类型(大写、小写、数字、上档键)也不同,下落的速度随着级别而增加;⑤通过敲击键盘,将相应字母从屏幕上消失,同时在Frame或Picture上重新产生新的字母;⑥计算出在规定的时间内打字的正确率,并给用户提示信息⑦打字练习可连续进行,当没到规定时间时也可以停止练习,显示的时间、分数恢复到初始状态并给出提示信息。

⑧练习的时间可以自由设定可以改变字体的属性⑨在练习开始时,可以输入用户的姓名并在窗体上显示出来2.关键问题的解决①于随机字母的生成,此过程需要完成的工作有几个:字母的生成方法Label1.Caption =Chr(Int(Rnd * 26) + 48)设定Label1随机显示的字母;设定显示字母的速度speed=75,也可以随机设定速度speed=Int(Rnd*100+100);设定字母出现的左边位置Label1.Left = Int (Rnd * Frame1.Width);设定字母出现的顶部位置Label1.Top = Frame1.Top。

②字母下落和记时,两个Timer控件的工作。

Timer1用于控制字母的下落,采用的方法Label1.top=Label1.top+speed。

并检查字母是否超出Frame范围,超出则重新调用生成字母的过程。

Timer2用于控制练习的时间,每秒触发一次时间减1。

当时间为0时停止生成新的字母,计算出打字的正确率,并通过MsgBox通知用户。

③检验字母是否和键盘键如一样,通过KeyPress事件实现。

如果正确则重新生成新的字母,并且给记录打字正确个数的变量加1。

④背景和字体的改变,使用一个通用对话框,挺容易解决。

⑤随等级不同,下落字母增多以及下落速度加快,使用3个LABEL,定义3个过程,再改变timer控件的interave属性,实现速度不同。

VB课程设计报告-打字练习

VB课程设计报告-打字练习

VISUAL BASIC课程设计报告题目:打字练习姓名:***学号:班级:1题目介绍在计算机及其它数码产品日益普及的今天,人们使用键盘应像使用笔写字一样熟练。

进行打字练习是熟悉键盘并提高打字速度的豪放法。

本题目要求编制一个打字练习游戏,是用户在游戏过程中练习指法。

2设计过程中用到的知识点(1)控件数组(2)键盘事件处理(3)文本文件的读写(4)多模块程序设计(5)随机值的生成3课题要求和承担的任务(1)游戏开始时出现“打字设置”窗口,在“您的姓名”文本框中输入用户名。

若未输入名字,就点击“开始练习”与“查看成绩”按钮,则提示用户输入姓名。

若未输入时间,就点击“开始练习”与“查看成绩”按钮,则提示用户输入时间。

在“打字设置”窗口可以设置打字速度和难度,速度决定字母下落的快慢,共分高,中,低速三档。

难度等级也分为三档:小写字母,大写字母,所有混合(字母,数字和符号)(2)选择速度和难度之后,单击“开始练习”按钮后,主页面以全屏方式显示。

根据难度的设置,屏幕上随即产生并落下各种字符。

若用户在字符落到屏幕底部之前敲击了相应的键盘键,则该字符被“击中”后消失,击中时在字符位置上显示一个爆炸的效果。

程序根据速度和难度的不同自动进行计分,分数实时地显示在主界面的顶部。

计分标准为:1,慢速+小写字母:打中一个1分2,慢速+大写字母:打中一个2分3,慢速+混合字符:打中一个3分4,中速+小写字母:打中一个4分5,中速+大写字母:打中一个5分6,中速+混合字符:打中一个6分7,高速+小写字母:打中一个7分8,高速+大写字母:打中一个8分9,高速+混合字符:打中一个9分(3)打字前可以选择打字的时间,时间一到弹出消息框显示用户本次练习得分,并提示是否继续练习,如果选“否”,返回“打字设置”窗口。

用户的成绩被保存在“SCORE.TXT”文件中,供以后查询。

(4)当下落字符中有相同字符时,一次只能打掉一个(5)在打字过程中,可以按ESC键中止游戏,返回打字设置窗口。

打字游戏课程设计报告

打字游戏课程设计报告

计算机学院计算机科学与技术专业《程序设计综合课程设计》报告(2011/2012学年第一学期)学生姓名:学生班级:学生学号:指导教师:2011年12月30日于氏打字通目录第一章课程设计目的和要求 (1)1.1 目的 (1)1.2 要求 (1)第二章课程设计任务内容 (3)第三章详细设计说明 (4)3.1 模块描述 (4)3.2 性能 (4)3.3 输入项 (4)3.4 输出项 (4)3.5 流程逻辑 (5)3.6 限制条件 (8)3.7 测试计划 (8)第四章软件使用说明 (13)第五章课程设计心得与体会 (14)附录1:参考文献 (16)附录1:程序清单 (17)第一章课程设计目的和要求1.1目的C++语言课程设计的主要目的是培养学生综合运用C++程序设计课程所学到的知识,编写C++程序解决实际问题的能力,以及严谨的工作态度和良好的程序设计习惯。

通过课程设计的训练,学生应该能够了解程序设计的基本开发过程,掌握编写、调试和测试C++语言程序的基本技巧,充分理解结构化程序设计的基本方法。

C++语言程序设计的主要任务时要求学生遵循软件开发过程的基本规范,运用结构化程序设计的方法,按照课程设计的题目要求,分析、设计、编写、调试和测试C++语言程序及编写设计报告。

本次课程设计是通过设计一个较为简单的“打字游戏”,进一步熟悉C++中有关各种知识的运用与掌握。

了解系统开发的需求分析、模块分析、程序流程图、编码测试、模块组装与整体调试的全过程,加深对C++的理解与Visual C++环境的使用;逐步熟悉程序设计的方法,并养成良好的编程习惯,进一步培养完善的C++编程设计思维,为以后进行软件编程、数据库管理等深入学习打下一个牢固基础掌握并且熟练应用《C++程序设计》中所学知识。

掌握函数功能的划分方法,并运用此方法解决问题。

学会程序测试方案的制定,并且实现程序的测试。

通过此次实践,积累经验,提高分析和解决问题的能力。

vb打字游戏 文档

vb打字游戏 文档

专业:计算机科学与技术学号:06321116班级:063211姓名:孟博指导老师:叶志翔一、内容摘要我们的程序是利用vb边写一个打字游戏的程序。

在改打字游戏中,有难易之分。

有不同的速度等级,在规定的时间内如果可以速度等级的挑战(前提是在剩余能量不为零的前提下)就可以闯关成功。

如果在规定的时间内剩余能量为零则打字速度没有达到规定的要求则本次挑战就失败了。

如果选择在玩一次就可以重新开始游戏。

打字游戏分为三个等级。

当在打字的过程中随着你打中的个数的不断增加速度等级也会随之改变。

每次游戏开始会开始倒计时,同时会有6个字母落下,按对建会将其击乱,同时会有新的字母从面掉下来,击中一个旁边的得分会相应的增加,而没有击中的字母会落下。

落下一个字母剩余能量就会跟着减少一个值。

当减到小于零时游戏就停止了。

该游戏主要是锻炼初学者的打字速度,简单易懂。

目录一、功能描述 (4)二、概要设计 (4)三、详细设计 (4)四、效果及存在问题 (6)五、心得体会 (8)六、成员及分工 (8)七、参考文献 (8)一、功能描述这是一个简单的打字小游戏。

适用于刚开始接触打字的初学者,我们的游戏实现的是单个的字母练习这就降低了难度,我们设有不通的速度等级,当你击中的字母达到规定值时速度就会增加。

随之增加难度.但是字母的个数不会改变,还是原来的6个字母下落,同时打字窗口还设有返回上一级菜单的按钮,练习者可以随时停止游戏返回上一级。

在打字的过程中如果字母没有被击中就会落下,落下一个字母剩余能量就会减一(我们舍得剩余能量为15.)当剩余能量减到小于零的时候游戏就会结束,打对一个字母旁边的分数栏就会曾加1,我们设定的时间是2分钟,当你进入游戏的同时倒计时也就开始了,如果在规定的2分钟结束时你的剩余能量大于零,你就胜利了。

同时会弹出一个窗体显示你的速度等级和得分。

胜利后你也可以选择再来一次。

重新开始。

二、概要设计三、详细设计1、利用一个数组控和一个随机函数来实现字母的随机赋值Randomize /保证字母是随机抽取的For i = 0 To 5 /利用循环给数组控件赋值Label1(i).Caption = Chr$(Rnd * 26 + 97)Next i2、在文本框的单击事件里用for循环实现了打中后字母的重新赋值和重新下落、以及得分的增加等功能代码如下所示For i = 0 To 5 'If Right(Text1.Text, 1) = Label1(i).Caption Thendefen = defen + 1 /当打对后得分就加一Label2.Caption = defen /定义label2的值表示得分Label1(i).Caption = Chr$((Rnd * 26) + 97) /当打对后字母有重新更换Label1(i).Top = 400 /打对后字母从top为400的地方开始掉下Text1.Text = "" /text进行清空End IfNext i3、在该游戏中有速度快慢的控制。

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

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

VB打字游戏课程设计报告内容摘要本程序是利用vb编写的一个打字游戏,游戏具有功能上方有文字掉下,按键可将其击掉,有速度选择,难度选择,难度低时为单个字符,难度高时为单词。

本游戏,可以让用户从零开始逐步变为打字高手,短时间内运指如飞48小时成为打字高手,寓教于乐。

本设计报告包括初始的设计想法,概要设计和详细设计。

详细设计包括界面设计和所需代码,及其运行后的结果图,以便具体使用。

本设计适用于VB初学者、爱好者的参考资料。

由于编者水平有限,时间仓促,难免有不足之处,敬请读者不吝赐教。

目录1. 功能描述3 2. 概要设计3 3. 详细设计4 4. 效果及存在问题9 5. 心得体会12 小组成员12 参考文献12 1.功能描述本程序是利用vb编写的一个打字游戏,游戏可以选择难易程度,选择简单时上方掉落的是单个字符,选择困难时上方掉落的是单词,当正确按键时可以将其击掉,成绩相应增加一分,开始前可以选择游戏速度,点击加减按钮可以调节游戏速度。

本程序还有许多实用功能,可以将游戏暂停、继续、从来、结束等。

2.概要设计打字游戏简单方框图屏幕上方掉落单个字符时键盘输入对应的单个字符屏幕上的单个字符消失与单词最比较相同时单词消失屏幕上方掉落为单词时键盘输入对应的单词单词存在在标签label8的caption上3.详细设计1界面设计在窗体上添加6个命令按钮command1、command2、command3 、command4、Command5 command6、8个标签Label1、Label2、Label3、Label4、Label5、Label6、Label7、Label8、2个定时器time1、time2、1个文本框text1和2个单选按钮option1、option2按表修改它们的属性,如图所示。

对象属性值Command1 Caption 加Command2 Caption 减Command3 Caption 开始Command4 Caption 结束Command5 Caption 暂停/继续Command6 Caption 重来Label1 Caption Label2 Caption Label3 Caption 成绩Label4 Caption 速度Label5 Caption 18 Label6 Caption Label7 Caption Label8 Caption time1 Interval 0 Time2 Interval 0 Option1 Caption 简单Option2 Caption 困难Text1 text 2编写程序代码如下Private Sub Command1_Click 曾加速度Label5.Caption Label5.Caption 1 End Sub 减小速度Private Sub Command2_Click Label5.Caption Label5.Caption - 1 End Sub 开始游戏Private Sub Command3_Click If Option1.Value Then Timer1.Interval 1 Timer2.Interval 0Label7.Caption ““ Label1.Top 8760 Label6.Top 8760 Label1.Visible True Label6.Visible True End If If Option2.Value Then Timer2.Interval 1 Timer1.Interval 0 Label1.Caption ““ Label6.Caption ““ Randomize Cls a Array“one“, “two“, “three“, “free“, “feel“, “fly“, “lacking“, “the“, “power“, “that“ x IntRnd * UBounda 1 Label7.Caption ax Command1.Enabled False Command2.Enabled False Label7.Top 0 Label7.Visible True End If Text1.SetFocus End Sub Private Sub Form_KeyPressKeyAscii As Integer 判断简单时是否打中,并使成绩加一If Option1.Value Then Timer1.Interval 1 If KeyAscii AscLabel1.Caption Then Label1.Top 0 Label1.Left Rnd * 10800 Label1.Caption ChrRnd * 26 97 Label2.Caption Label2.Caption 1 End If If KeyAscii AscLabel6.Caption Then Label6.Top 0 Label6.Left Rnd * 10800 Label6.Caption ChrRnd * 26 97 Label2.Caption Label2.Caption 1 End If End If 判断困难时是否打中,并使成绩加一If Option2.Value Then Timer2.Interval 1 End If If KeyAscii 65 And KeyAscii 97 And KeyAscii 8760 Then Label1.Top 0 Label1.Left Rnd * 10800 Label1.Caption ChrRnd * 26 96 End If If Label6.Top 8760 Then Label6.Top 0 Label6.Left Rnd * 10800 Label6.Caption ChrRnd * 2696 End If End Sub Private Sub Timer2_Timer Randomize 困难时游戏速度Label7.Top Label7.Top Label5.Caption 10 判断是否到底,并随机生成单词,从顶开始If Label7.Top 8760 Then Label7.Top 0 Label7.Left Rnd * 10800 Randomize Cls a Arr ay“one“, “two“, “three“, “free“, “feel“, “fly“, “lacking“, “the“, “power“, “that“ x IntRnd * UBounda 1 Label7.Caption ax Else Label7.Top Label7.Top 5 End If End Sub 4.效果及存在问题运行后得到如图界面选择简单模式时,单击开始,上方掉落的是单个字符选择困难模式时,单击开始,上方掉落的是单词存在问题1结束时没有提示是否确定结束游戏 2 游戏还缺许多人性化设计 5.心得体会通过本次的VB实验程序设计,使我对VB课程有进一步的了解,使自己的上机能力有大幅度提升,在设计这个程序时,首先我开始构思游戏的内容,再从书本、网上找了一些有关打字游戏设计的资料,但是当把基本的弄好了之后,发现了一些棘手的问题,使我无从下手,经过与同学的商讨和老师的指导后,终于明白了其中的奥妙其实在打字游戏程序上花费最多事时间是在键盘的输入如何问题,当对应的输入和掉落的单个字符、单词相同时屏幕上的单个字符、单词会消失,最后经过自己的反复尝试以及与同学的讨论,打字游戏最终设计成功。

打字游戏的设计报告

打字游戏的设计报告

打字游戏的设计报告姓名:赵香俊班级:中北11级.net专业:软件设计日期:2012-10-25目录简介3目的3范围3参考资料3概述3定义13 2.1排行版:4 2.2自由模式:4 2.3 计时赛:4 2.4 生存模式:4 2.5难度选择: 5 2.6 游戏帮助:5定义2:6简介将本系统中所涉及的词汇(术语)进行详细、准确的描述。

目的1.1.1在描述的过程中让开发人员了解、熟悉业务过程。

1.1.2为用例描述、用例建模、架构设计提供术语解释。

1.1.3为实体建模、数据库设计提供术语解释。

范围主界面模块,自由游戏模块,生存模式模块,计时赛模块,排行版模块参考资料概述定义12.1主页面在主页面上有排行版,自由练习,计时赛,生存模式以及难度的选择。

Label1 Label2 Label3 Label4 Label5 Label6,上字体的颜色可以不断地变化。

在难度中可以让用户选择,可以把选项放在一个panel中,让他隐藏来,当用户点难度的时候可以选择难易程度。

在接下来介绍的三种模式当中都可以把他们放在同一个界面上2.2自由模式:你点击开始-游戏开始游戏开始后会从屏幕的上方掉下字,每次落下来的字的颜色都不同,速度也不同,并且不可以让字飘到屏幕以外的地方。

如果你在没有落到屏幕的底方的时候把字给消除了,加10分,否则就扣10分。

同时成绩也会记录到数据库中,在排行版中可以查询。

2.3计时赛:1.用户点击开始,开始的按钮上会显示出暂停,这两个功能可以在同一个按钮上切换,点击开始,音乐响起,随之字母会从屏幕的最上方落下来,每次的颜色不同,速度不同,字母也不同,当你在字母没有落到屏幕的最低端的时候你把字母给消除了你就可以加10分,否则减10分。

在计时赛这个模块中有时间限制,如果到了规定的时间内,系统就会停止工作。

2.2.4 生存模式1.用户点击开始,开始的按钮上会显示出暂停,这两个功能可以在同一个按钮上切换,点击开始,音乐响起,随之字母会从屏幕的最上方落下来,每次的颜色不同,速度不同,字母也不同,当你在字母没有落到屏幕的最低端的时候你把字母给消除了你就可以加10分,否则减10分。

趣味打字游戏(vb)

趣味打字游戏(vb)

一、课程设计题目:趣味打字游戏二、功能描述:新游戏菜单:让结束或运行中的游戏重新开始。

开始菜单:打字游戏开始,背景音乐响起。

暂停菜单:运行中的游戏暂停,音乐停止。

继续菜单:使暂停的游戏继续,音乐随之响起。

退出菜单:结束游戏。

进程:每没打中一个字母,滚动条前进一格。

倒计时:计算剩下的时间。

时间:计算游戏开始所用的时间。

得分:每没打中一个字母,得分加1分。

在规定时间内,打字数量达到下一级别,得分归0,重新累加。

失误:若键盘没有击中屏幕上的任何一个字母,并且消失了,则失误累加。

当失误累计达到10分时,屏幕上出现“很遗憾,你没有过关!继续?请点击“开始”按钮”。

总分:每打一个字母,得分累加。

级别:在规定时间内,打字数量达到下一级别的要求,级别累加。

开始按钮:打字游戏开始,背景音乐响起。

暂停按钮:运行中的游戏暂停,音乐停止。

继续按钮:使暂停的游戏继续,音乐随之响起。

退出按钮:结束游戏。

三、概要设计:游戏开始,屏幕上出现四个字母,并且音乐响起。

此时,“开始”和“继续”菜单、“开始”和“继续”按钮不再可用,“暂停”菜单和“菜单”按钮可用。

按“暂停”游戏中止,此时,暂停不可用,按“新游戏”和“继续”游戏开始。

“帮助”菜单包括游戏说明和关于版权说明。

点击游戏说明,出现另一个界面,介绍游戏介绍和游戏规则。

点击版权说明,按“确定”按钮后界面消失。

四、详细设计:游戏界面有菜单栏,此菜单栏包含有游戏和帮助两个菜单。

点击游戏弹出下拉式菜单,包括新游戏、开始、暂停、继续和退出。

按新游戏菜单后,运行中的游戏重新开始。

点击开始菜单或开始按钮后,游戏开始,背景音乐开始响起。

此时“开始”和“继续”不可用,“暂停”可用,“倒计时”和“时间”开始计时,同时屏幕上方随机的产生四个字母,并随时间的增加下落。

当用键盘击中某个字母时,发出“嘟”的一声。

得分和总分各自累加。

此后字母消失,屏幕上方又出现一个新的字母。

若没有击中任何一个字母,在屏幕下方字母消失,失误累加,得分和总分不受影响。

汇编语言课程设计打字游戏

汇编语言课程设计打字游戏

目录1. 课程设计目的及内容 (2)1.1 课程设计目的 (2)1.2 课程设计内容 (2)2. 开发环境 (2)2.1 软、硬件环境 (2)2.2 MASM开发环境 (3)3.功能分析 (3)3.1 基本功能设计 (3)3.2系统程序流程图 (4)4. 调试和运行程序 (5)4.1 程序调试 (5)4.2 程序运行 (6)5. 课程设计总结 (8)6. 参考文献 (8)附录 (9)源程序代码 (9)打字游戏1. 课程设计目的及内容1.1 课程设计目的汇编语言是一项实用性很强的技术,学完教学大纲规定的全部内容,完成所有实践环节的基础上,旨在深化学生学习的汇编语言课程基本知识,进一步掌握汇编语言课程设计方法,提高分析问题,解决问题的综合应用能力。

学会查阅和汇编语言相关的规范,手册等技术资料。

能正确绘制和使用流程图。

掌握汇编语言程序设计和程序调试的基本技能,能进行基本的软件设计。

1.2 课程设计内容此课程设计中,实现的主要功能是在屏幕的顶端排列一排英文字母,底端对应排列一排小球或小方块,屏幕顶端的英文字母以一定的速度随机下落, 落到底端的小球或小方块处, 小球或小方块消失,但如果在英文字母落到底端前,正确按键(落下的英文字母的键位),则英文字母消失,英文字母消失或落到底端后,顶端原字母的空处出现另一新字母,按空格键则暂停,再按空格键字母继续下落,如过底端小球或小方块消失后,则不再出现。

2. 开发环境2.1 软、硬件环境软件环境:操作系统:Windows 8 64位(DirectX 11)、BIOS系统DOS系统硬件环境:处理器:英特尔第三代酷睿i3-3110M @ 2.40GHz 双核内存:4GB(三星DDR3 1333MHz)主硬盘:希捷ST500LM012 HN-M500MBB (500GB/5400转/分)显示器:三星SEC3649(14 英寸)2.2 MASM开发环境Masm是汇编编译器,是微软公司开发的汇编开发环境,拥有可视化的开发界面,使开发人员不必再使用DOS环境进行汇编的开发的优点,支持伪指令和宏汇编,最后编译生成obj文件,通过link工具连接成可执行文件exe。

打字游戏毕业论文

打字游戏毕业论文

打字游戏毕业论文打字游戏设计摘要:本文的主题是设计打字游戏,是在 VB 的环境下编程的。

在户联网飞速发展的今天,电脑成了每家每户的多需要的平台,打字的速度也是人们所追求的。

本文主要设计的是对键盘的熟悉程度,用户可以根据对键盘的认识程度选择相应的级别来完成打字测试。

用户完成打字测试,可以进入一个测试结果窗体,这个窗体清楚的显示出用户击中字符的个数和没有击中的数目。

用户通过这个窗体可以更好的认识到自己对键盘上的字符还有哪些不熟识的。

关键词:打字游戏 ;测试;设计;引言随着科学技术的不断提高,计算机科学日渐成熟,计算机已经深入到工作和生活的各个角落,文字录入是学习计算机非常重要的一部分。

在手写录入技术和语音识别技术还不完善的同时大部分人还在使用键盘作为文字录入的工具。

所以我编了这个程序,也是我的毕业设计,希望能对电脑处学者和想提高打字速度的朋友有所帮助。

1 设计思路在打字之前,由用户选择所需要的打字级别,该系统设置是通过一组单选按钮来实现的。

本系统的关键在于如何实现打字练习。

首先,应使字符以随机方式出现在窗体中,并不断下落,其中字符的出现方式与用户的具体设置相关。

本系统中采用了命令按钮来表示不同的随机字符,该数组的每个元素为一个命 1 令按钮,用来显示一个字符。

为了使不同的字符多能在窗体的顶端位置出现并下落,可在设计时设置各命令按钮的具体位置多在窗体的顶端。

而实现出现字符的随机出现方式,应在命令按钮的 caption 属性中使用随机函数,使之代表不同的字符。

字符的自动下落过程由定时器 Timer1,Timer6 控制命令按钮,下落速度取决于用户设置的练习速度。

用户在不断按键的时候,会引起 Keypress 事件,在该事件中可判断用户的输入是否和当前命令按钮数组中某个元素的 Caption 属性值性质相同,即判断是否击中了出现在窗体中的某个字符。

如果击中,则使用 Move 方法把图片 Image1 移动到被击中字符的位置出现子弹击中图标的视觉效果。

微机课设报告 打字游戏汇编语言的设计

微机课设报告 打字游戏汇编语言的设计

学号09750223实习报告微型计算机原理及应用课程设计报告打字游戏程序设计起止日期:2012 年1 月3 日至2012年 1 月6 日学生姓名马聪班级09电气2班成绩指导教师(签字)电子与信息工程系2012年1月05日摘要为了更好地掌握学习微机原理的知识,我们进行了这次课程实验,以完善我们的知识体系,我们通过汇编语言在PC机上完成了一个打字游戏的设计,它具有练习打字的功能。

本有游戏主要针对指法练习,并提供字母和单词两种选择。

根据用户自身情况,可以进行速度调节,以达到最佳的练习效果。

同时本游戏提供显示得分,正确率和失败个数的功能。

当失败个数超过一定个数后,游戏结束并提示是否继续。

目录一、课程设计题目 (2)二、设计思路模块划分流程图 (2)㈠设计思路 (2)㈡模块划分 (2)㈢流程图 (3)三、程序源代码 (4)四、调试过程,运行结果和出现的问题及解决 (12)1、调试结果 (12)2、在调试中碰到问题 (14)五、课程设计心得 (14)六、成绩单 (15)一、课程设计题目、内容和实现的功能字母打字游戏基本功能:0 菜单主界面由“开始”“速度调整”“暂停”“结束”“统计得分”等项组成1 按ESC键退出游戏,显示得分,正确打字数和错误打字数.二、设计思路、模块划分、流程图(一)设计思路:利用计算机控制发声的原理,来演奏乐曲的程序。

乐曲按一定的高低、长短和强弱关系组成的音调。

根据歌谱,来编写歌程序的音符表和节奏表。

组成乐谱的每个音符的频率值和持续时间是乐曲程序发声所需要的两个数据。

通过来设时间值,然后通过发声程序“*”来播放音乐。

通过键盘控制扬声器发出各种音符声音,使计算机键盘变成钢琴键盘,这是可以用它来演奏各种简单的声音。

弹奏时对应乐谱上的q音符,按下1,程序将接收到的1键的频率为262Hz送入程序中。

1、音乐播放选择从键盘上输入“1”,则播放“新年好”;从键盘上输入“q”,则退出;从键盘上输入其它字符,则等待重新输入。

小小打字游戏设计_课程设计材料

小小打字游戏设计_课程设计材料
[3]陈伟.SQL Server2005数据库应用与开发教程[M].清华大学出版社,2007
[4]谭浩强.C程序设计(第四版)[M].清华大学出版社,2010
[5]赵民.新概念Visual C#.NET Web教程[M].北京:北京海淀出版社,2000
指导教师签字
系主任签字
年月日
课程设计评审表
指导教师评语
(2)打字游戏的软件设计、系统功能、基本信息等。




(1)符合C#程序设计、打字游戏程序设计的基本要求;
(2)能够实现游戏的正常运行;
(3)达到打字练习兼娱乐的效果等。



为期两周




1.分析设计阶段:按照需求分析、总体设计、详细ห้องสมุดไป่ตู้计这几个步骤进行。这一阶段前第1天完成。
2. 编码调试阶段:根据设计分析方案编写C#代码,然后调试该代码,实现课题要求的功能。这一阶段在第3天完成。
3. 调试与改进阶段。这一阶段在第4天完成。
4. 总结报告阶段:总结设计工作,写出课程设计说明书、需求分析、总体设计、详细设计、编码、测试的步骤和内容。这一阶段在第5天完成。




[1]王晶.Visual C#.NET Web6.0基础[M].辽宁:辽宁教育出版社,2002
[2]郑阿奇、梁敬东.C#程序设计教程[M].北京:机械工业出版社,2015
成绩
评定
指导教师签字:
年 月 日
答辩教师评语
成绩
评定
答辩教师签字:
年 月 日
二级学院工作小组意见
成绩
评定
二级学院领导签字(盖章):

打字游戏程序设计报告

打字游戏程序设计报告

1.1 设计目的 本次课程设计的目的主要是将课堂上所学的知识学以致用,通过程序的制作过程学习课外的新知识,并加强加深对旧知识的理解与掌握,并加强加深对旧知识的理解与掌握,最终使学生达到以最终使学生达到以下三点:下三点:1.使学生增进对汇编语言的认识,加强用汇编语言编程的能力。

2.使学生了解和掌握汇编语言程序设计过程、方法及其实现,为以后微机原理课程的深入学习打下良好基础。

原理课程的深入学习打下良好基础。

3. 3. 使学生进一步掌握屏幕输出显示的设计方法。

使学生进一步掌握屏幕输出显示的设计方法。

1.2 课程设计在教学计划中的地位和作用《微机计算机原理与接口技术》这门课是自动化和电子等专业重要的基础专业课程之一,要求我们要有实际的动手能力。

要求我们要有实际的动手能力。

由于我们在课堂上学到的大多都是由于我们在课堂上学到的大多都是理论知识,所以需要通过课程设计这个环节,把我们所学到的知识运用到实践,这也是课程设计的主要目的,其中包括提高汇编等语言的编程能力及对接口等硬件的理解与分析能力和设计接口电路的能力。

本次设计课题使我们在汇编等语言的编程方面得到了很大的提高,的编程方面得到了很大的提高,是我受益匪浅。

是我受益匪浅。

原本陌生的和不太熟悉的指令程序及各种定义,序及各种定义,现在都有了一些认识及更深的理解。

现在都有了一些认识及更深的理解。

现在都有了一些认识及更深的理解。

这对我们以后走向社会,这对我们以后走向社会,这对我们以后走向社会,更更快地适应工作奠定了很好的基础。

快地适应工作奠定了很好的基础。

第二章 打字游戏程序设计内容要求和设计思想2.1 设计内容要求要求设计的程序需包括:在游戏开始后,按回车键进入打字游戏;按要求设计的程序需包括:在游戏开始后,按回车键进入打字游戏;按ESC键返回主界面;按空格暂停;按大写字母E 程序结束。

程序结束。

2626个字母中的任意一字母从屏幕落下,在下落的过程中键入落下的字母,如果正确,字母消失,分数增加;如果不正确,字母继续下落。

vb打字游戏课程设计

vb打字游戏课程设计

vb打字游戏课程设计一、教学目标本课程旨在通过VB打字游戏的设计与实现,让学生掌握VB编程的基本概念和方法,培养学生的编程兴趣和能力。

具体目标如下:1.理解VB编程语言的基本语法和概念。

2.掌握VB编程语言的基本数据类型、运算符和表达式。

3.熟悉VB编程语言的程序结构、控制语句和函数。

4.能够使用VB编程语言编写简单的程序。

5.能够使用VB编程语言设计并实现一个打字游戏。

6.能够对编写的程序进行调试和优化。

情感态度价值观目标:1.培养学生的团队合作意识和沟通能力。

2.培养学生的问题解决能力和创新精神。

3.培养学生的自主学习和持续学习的习惯。

二、教学内容本课程的教学内容主要包括VB编程语言的基本语法和概念、基本数据类型、运算符和表达式、程序结构、控制语句和函数等内容。

具体安排如下:1.第1-2课时:VB编程语言的基本语法和概念。

2.第3-4课时:基本数据类型、运算符和表达式。

3.第5-6课时:程序结构、控制语句和函数。

4.第7-8课时:设计并实现一个打字游戏。

三、教学方法本课程采用讲授法、案例分析法和实验法相结合的教学方法。

1.讲授法:通过教师的讲解和演示,让学生掌握VB编程语言的基本语法和概念、基本数据类型、运算符和表达式、程序结构、控制语句和函数等内容。

2.案例分析法:通过分析典型案例,让学生理解和应用VB编程语言解决实际问题。

3.实验法:通过学生动手实践,培养学生的编程能力和问题解决能力。

四、教学资源本课程的教学资源包括教材、参考书、多媒体资料和实验设备。

1.教材:选择一本适合初中生的VB编程语言教材,作为学生学习的主要参考资料。

2.参考书:为学生提供一些VB编程语言的参考书籍,以丰富学生的学习资源。

3.多媒体资料:制作一些VB编程语言的教学视频和演示文稿,以帮助学生更好地理解和掌握课程内容。

4.实验设备:为学生提供电脑和相关的实验设备,让学生能够进行实际的编程练习。

五、教学评估为了全面、客观地评估学生在VB打字游戏课程中的学习成果,我们将采用多种评估方式相结合的方法。

vb课程设计打字游戏

vb课程设计打字游戏

vb课程设计打字游戏一、教学目标本课程旨在通过制作打字游戏,让学生掌握VB编程语言的基本语法、关键字、数据类型、变量、常量等基础知识,培养学生运用VB编程解决实际问题的能力。

同时,通过小组合作、讨论交流等环节,培养学生的团队协作精神、创新思维和审美情趣。

1.掌握VB编程语言的基本语法和关键字。

2.了解数据类型、变量和常量的概念及使用方法。

3.学会使用VB编程解决实际问题。

4.能够独立编写简单的VB程序。

5.具备调试和优化程序的能力。

6.能够运用VB编程语言制作有趣的打字游戏。

情感态度价值观目标:1.培养对编程科技的兴趣和好奇心。

2.增强团队协作、讨论交流的能力。

3.提升创新思维和审美情趣。

二、教学内容本课程以我国初级中学信息技术课程标准为依据,结合VB编程语言的特点,选择以下教学内容:1.VB编程语言概述:介绍VB的发展历程、特点和应用领域。

2.VB基本语法:讲解VB程序的基本结构、关键字、数据类型、变量和常量。

3.控制结构:讲解顺序结构、选择结构和循环结构的使用方法。

4.函数和算法:介绍常用数学函数、日期函数和字符串函数,讲解算法的概念和常用算法。

5.输入输出操作:讲解VB中的输入输出方法,如文本框、命令按钮等。

6.打字游戏设计与实现:以制作打字游戏为主线,让学生综合运用所学知识解决实际问题。

三、教学方法本课程采用以下教学方法,以提高学生的学习兴趣和主动性:1.讲授法:讲解VB编程语言的基本概念、语法和关键字。

2.案例分析法:分析典型打字游戏案例,引导学生学会运用VB编程解决实际问题。

3.实验法:让学生动手实践,制作属于自己的打字游戏。

4.小组合作法:鼓励学生分组合作,共同完成打字游戏设计任务。

5.讨论交流法:学生进行课堂讨论,分享心得体会和解决问题的方法。

四、教学资源为实现本课程的教学目标,教师需准备以下教学资源:1.教材:选用国内外优秀VB编程教材,如《VB编程入门与应用》等。

2.参考书:提供VB编程相关参考书籍,如《VB编程实例教程》等。

课程设计打字游戏

课程设计打字游戏

汇编语言课程设计设计题目: 指法练习班级: 计算机04-4班学号: 20042390作者: 王丰指导老师: 郑利平日期: 2007.1.5汇编语言课程设计报告-----<打字游戏>一、课程设计目的课程设计使学生更进一步理解和掌握汇编语言知识、程序设计的方法和技巧,使学生能够使用汇编语言分析、设计中小型程序的能力。

通过课程设计,有助于学生更好的了解整个课程的知识体系,锻炼学生运用本课程的知识解决更复杂的实际问题的能力,从而为后续课程的学习、毕业设计以及将来的实际工作打好坚实的基础。

二、设计题目指法练习三、设计要求1、从屏幕上方以一定的时间间隔随机落下可显示字符,字符的出现位置亦是随机的;2、在多个字符下落的过程中可输入任意键,若键入与其中的任意一个字符相匹配的键,则该字符高亮显示并发出蜂鸣声,同时计分;3、按ESC键结束练习并显示命中率;4、再次按ESC键退出。

四、设计环境硬件:PC机,软件: masm5.0五、设计分析指法练习,是在屏幕上以一定的时间间隔随机的下落一写字符,我在程序中的设计方法是从屏幕的第一行开始显示一个字符,然后在用一个时间延时函数延时一段时间,再在此位置显示空格字符,延时后在同一列的下一行显示原字符,如此循环,中间如果有输入正确的字符,则,循环停止, 并同时将此字符高亮显示,方法是改变此字符的属性,并将score加1,然后光标移到第一行还是新的循环.若输入中间字符不正确,循环到21行时,则扬声器发出蜂鸣声,同时life减1.设计中要求每次下落的字符是随机的,我在程序中的设计方法是取系统时间1/100秒,然后将此时间模取26,将得到余数加上61,将此作为输出字符的ASCLL码,如此循环78次,将这些字符存入letter缓冲区,并在屏幕最上方显示出来.开始下落的字母的位置也是随机的,同样取系统时间,,由于一行最多只能有78个字符,所以当取的时间大于等于78时,应减去78,将得到的结果作为取字符的位置,此种随机虽然不是很严谨,但用在此程序中还是很不错的.题目中还要求计算命中率,由于在游戏开始的同时开始了记分,所以在结束游戏时,将得分和错误统计出来,很容易计算出命中率,这里就不做多余的叙述.在题目的要求的基础上,我还给游戏增加了几个难度,其实也很简单,就是控制字母下落的速度,方法是改变每次字符显示的时间间隔,这样从屏幕上看,字母下落就会有快慢.六、程序的模块程序设计时,我没有分模块,只有实现个别功能的几个子程序,分别是发声程序,延时程序,和命中率计算与显示程序,这在原代码中均有注释,在此就不在详细叙述.七、课程设计心得由于课程设计开始的比较早,所以有时间去准备.开始时在网上看了一些资料和例子,搞清楚了程序设计的基本原理.最开始不明白的地方就是如何让字符下落,后来发现就是不停的在屏幕的不同位置显示该字符,加以延时,看起来就像是字符不断的从上面掉下来.随机问题也是本程序的一个难点,看过资料后知道汇编中没有现成的完美的随机函数.所以我就想到取系统时间来制造随机数,因为时间时刻都在变化,而且打字的时间也不一定,结果游戏的随机性还不错,呵呵这学期汇编的学习,自己感觉还不错,平时也练习了不少.从汇编程序的学习中,我觉得自己突然一下子明白了一般程序设计的原理,看程序时,不再感觉茫然,自己写点小程序时,也知道该如何下手.算法上也学到了不少新的东西,总算劳有所获吧!本打算把程序的运行流程图画出来,无奈,最近考试太多,时间实在不够啊,只有在程序中直接注释了,其实程序的思路很清晰,相信大家多能看懂最后,感谢郑利平老师一学期来指导和帮助,也感谢我们班的桑磊同学在课程设计中给我解答疑问!八、源程序如下:;=======================================================================;打字游戏程序;=======================================================================init_game macro op1,op2,op3,op4,op5,op6 ;循环输出,用于初始化界面mov cx,0mov dh,op1 ;起行mov dl,op2 ;起列op6:mov ah,02hmov bh,00hint 10hpush cxmov ah,0ahmov al,op3 ;要显示的字符mov cx,01hmov bh,00hint 10hpop cxinc cxinc op4 ;指出循环输出的是行还是列cmp cx,op5 ;循环次数jne op6endm;=======================================================clean macro op1,op2,op3,op4 ;用于清屏,分别是起止的行和列mov ah,6mov bh,00010111bmov al,0mov ch,op1mov cl,op2mov dh,op3mov dl,op4int 10hmov ah,2mov bh,0mov dh,0mov dl,0int 10hendm;======================================================menu macro op1,op2,op3 ;用于屏幕上文字的输出mov cx,0mov ah,02hmov bh,00hmov dh,op1mov dl,op2int 10hlea dx,op3mov ah,9int 21hendm;=======================================================data segmentfgf db '===============================================$' ;分隔符menu1 db '1.start game$'menu2 db '2.select level$' ;主界面上显示的内容menu3 db '3.exit$'menu4 db 'select number of menu:$'menu5 db 'author: wangfeng$'menu6 db 'NO. : 20042390$'menu7 db '1.very easy$'menu8 db '2.normal$' ;难度的选择menu9 db '3.hard$'menu10 db '4.return$'menu11 db 'data : 2006.12.24$'meg1 db 'press any key to start the game...$' ;游戏开始之前的提示meg2 db 'press esc key return main menu$'meg3 db 'press space key for pause $'meg4 db 'when the game was paused,press ese to quit!$'meg5 db 'life:$' ;生命数meg6 db 'score:$' ;分数meg7 db 'hit the letter num:$'meg8 db ' miss letter num:$'meg9 db ' the shooting is:$'ma db 0mb db 0sped1 dw 0speed dw 3000d ;游戏的速度,也决定了游戏的难度letters db 78 dup(0) ;上方显示的字母life db 39hposition db 1 ;上方字母的位置用于控制落下的字母time_m db 0time_s db 0xmul db 13n db 26score1 db 0level db 1hang db 0line db 0fen1 db 0fen2 db 0fen3 db 0fen4 db 0fen5 db 0string db '100%$'error db 0data ends;============================================code segmentassume cs:code,ds:data;,ss:stackstart: mov ax,data mov ds,ax ;这里是几个数据的初始化 mov position,1 mov speed,3000 mov level,1 mov sped1,50000 mov error,0 mov score1,0 jiemian: mov ah,01h mov cx,00h or ch,00010000b int 10h ;置光标类型,用于隐藏光标 clean 0,0,24,79 ;下面这些是游戏的初始化 init_game 0,0,08h,dl,80,sk1 init_game 24,0,08h,dl,80,sk2 init_game 0,0,08h,dh,25,sk3 init_game 0,79,08h,dh,25,sk4 menu 5,15,fgf menu 7,25,menu1 ;界面显示 menu 9,25,menu2 menu 11,25,menu3 menu 13,15,fgf menu 15,25,menu4 menu 17,55,menu5 menu 19,55,menu6 menu 21,55,menu11 mov ah,2 mov bh,0 mov dh,15 mov dl,47 int 10h ;把光标放在合适的位置 mov ah,0ah mov al,' ' mov bh,00h mov cx,01h int 10h ;在选择时屏蔽其他的按键,使之不出现在屏幕上 mov ah,1 int 21h input: cmp al,'1' je begin ;当输入字符是1时, ;跳转到begin 开始游戏 cmp al,'2'je to_speed_c ;当输入字符是2时,跳转, ;由于不能直接跳转到 ;speed_c 故用了个转移 cmp al,'3' je to_exit cmp al,1bh je to_exit_d to_otherkey: jmp otherkeyto_exit: mov ah,1 int 21h cmp al,0dh jne to_otherkey jmp exitto_speed_c:jmp speed_cto_exit_d:jmp exit;=================================== begin:mov ah,1int 21hcmp al,0dhjne to_otherkeyclean 1,1,23,78play_message: ;显示有关游戏提示menu 10,18,meg1menu 12,18,meg2menu 14,18,meg3menu 16,18,meg4mov ah,07hint 21hcmp al,1bh;按任意键继续,;不把输入的字符显示在屏幕上je to_jmjmp playto_jm:jmp jiemianplay:clean 1,1,23,78mov life,39hmov ah,2mov bh,0mov dh,1mov dl,1int 10hmov bx,0lea si,lettersoutput_letters: ;显示上方字母mov ah,2chint 21h mov al,dlmov ah,0div nmov dl,ahadd dl,61hmov [si],dlmov ah,2int 21hmov cx,14987call waitfinc siinc bxcmp bx,78je nextjmp output_lettersnext:menu 23,70,meg5menu 23,30,meg6;生命数的相关显示push dxmov ah,2mov bh,0mov dh,23mov dl,76int 10hmov ah,0ahmov al,lifemov bh,0mov cx,1int 10hmov ah,2mov bh,0mov dh,23mov dl,43int 10hmov ah,0ahmov al,score1mov al,30hmov bh,0 mov cx,1 int 10h pop dx jmp game sub_p: sub position,78 cmp position,0 jne next3 inc position next3: jmp game_next game: lea si,letters mov ah,2ch ;伪随机算法,方法是读取1/100秒, int 21h mov al,dl mov position,al cmp position,0 jne next2 inc position next2: cmp position,78 ;和78比较,大于则减去78 ja sub_p game_next: add si,word ptr position dec si mov dl,position ;position 就代表的是列 mov ah,02h mov dh,1 mov bh,0 int 10h ;置光标位置 mov bl,12h temp: mov cx,0 nextrow: push cx mov cx,0 yanchi: ;延迟 push cx mov cx,0 yanchi1: add cx,1 cmp cx,sped1 ;延迟 jne yanchi1 push dx mov ah,06h mov dl,0ffh int 21h pop dxjz pass ;不输入则跳转pass cmp al," " je pause1 ;空格,暂停 jmp skip1 pause1: jmp pause skip1: cmp al,1bh je display;esc,返回到开始时的界面cmp al,[si] je to_disappear ;正确输入,字母消失pass: pop cxinc cx cmp cx,speed ;speed,字母下落速度 je print1 jmp yanchi print1: jmp print to_disappear:mov bh,0 mov ah,3 int 10h mov hang,dh mov line,dl mov bh,0 mov ah,9 mov cx,1 mov bl,1ch int 10h mov ah,2 mov bh,0 mov dh,hang mov dl,line int 10h mov dl,[si] mov ah,2 int 21h call delay0 jmp disappear ;跳到记分段 display: clean 1,1,23,78 call disp mov ah,1 int 21 cmp al,1bh je to_start1 to_start1: jmp start to_exit1: jmp exit pause: push dx mov ah,06h mov dl,0ffh int 21h pop dx cmp al,1bh ;暂停时输入大写的q,则退出游戏 je display cmp al," " ;再次按空格,游戏继续 jne pause jmp pass print: ;在字母处输入空格填 mov ah,0ah mov bh,0 mov al," " mov cx,1 int 10h mov ah,02h mov bh,0 inc dh int 10h ;光标下移一行mov ah,09hmov al,[si]mov bh,0 mov cx,1 int 10h ;输出字母 pop cx inc cx cmp cx,21 ;如果落到第21行还没有消失, ;则life 减一,字母消失 je to_print_next jmp nextrow ;如果没到21行,继续下落 to_print_next: push ax mov al,error inc almov error,al pop ax call sound1 jmp print_next ;change_0: ;jmp print_next disappear: ;正确输入后字母消失 pop cx pop cx mov ah,0ah mov bh,0 mov al," " mov cx,1 int 10h inc score1 ;此处代码是为了同步输出得分 ;和当前life 的剩余值 push ax push bx mov al,score1 mov ah,0 mov bl,10 div bl mov fen1,al mov fen2,ah pop bx pop ax mov ah,2 mov bh,0 mov dh,23 mov dl,43 int 10h mov ah,0ah mov bh,0 mov al," " mov cx,1 int 10h mov ah,0ah mov al,fen1 add al,30h mov bh,0 mov cx,1 int 10h mov ah,2 mov bh,0 mov dh,23 mov dl,44 int 10h mov ah,0ah mov bh,0 mov al," " mov cx,1 int 10hmov ah,0ah mov al,fen2add al,30h mov bh,0 mov cx,1 int 10h mov dh,hang ;输入正确后, ;将该字符在原位置高亮显示 mov dl,line mov bh,0 mov ah,2 int 10h mov ah,9 mov bh,0 mov al,' ' mov cx,1 mov bl,17h int 10hjmp hit to_over: jmp start print_next: ;life 减为0时,游戏结束 sub life,1 cmp life,30h je to_over mov ah,0ah mov al," " mov bh,0 mov cx,1 int 10h mov ah,02h mov dh,23 mov dl,76 mov bh,0 int 10h ;更新life mov ah,0ah mov al,life mov bh,0 mov cx,1 int 10h hit: ;重新把光标移到顶端 mov ah,02h mov bh,0 mov dh,1 mov dl,position int 10h mov ah,2ch int 21h mov al,dl mov ah,0 div n add ah,61h mov [si],ah ;重新在空格处设置一个字母 mov ah,0ah mov bh,0 mov cx,1 mov al,[si]int 10hjmp game speed_c: ;速度选择 mov ah,1 int 21h cmp al,0dh jne otherkey jmp speed_jm otherkey: ;隐藏非法的字符 push ax mov ah,2 mov bh,0 mov dh,15 mov dl,48 int 10hmov ah,0ahmov al," " mov bh,00h mov cx,01h int 10h mov ah,2 mov bh,0 mov dh,15 mov dl,47 int 10h pop ax mov dx,ax mov ah,2 int 21h jmp input speed_jm: ;难度选择的界面 clean 1,1,23,78 menu 6,15,fgf menu 8,30, menu7 menu 10,30,menu8menu 12,30,menu9 menu 14,30,menu10 menu 16,15,fgf menu 18,25,menu4 choose_speed: mov ah,2 mov bh,0 mov dh,18 mov dl,47 int 10h mov ah,1 int 21h choose_next: cmp al,'1' je speed1_1 jmp spe2 speed1_1: jmp speed1 spe2: cmp al,'2' je speed2_2 jmp spe3 speed2_2: jmp speed2 spe3: cmp al,'3' je speed3_3 jmp spe4 speed3_3: jmp speed3 spe4: cmp al,'4' je h_jm cmp al,1bh je h_jm_d h_jm: mov ah,1 int 21h cmp al,0dh jne otherkey1 jmp jiemian h_jm_d: jmp jiemian speed1: mov sped1,50000d jmp begin speed2: mov sped1,40000d jmp begin speed3: mov sped1,20000d jmp begin otherkey1: push ax mov ah,2 mov bh,0 mov dh,20 mov ah,2 mov bh,0 mov dh,15 mov dl,46 int 10h exit: ;退出游戏 mov ah,6 mov bh,7 mov al,0 mov ch,0 mov cl,0 mov dh,24 mov dl,80 int 10h mov ah,2 mov bh,0 mov dh,0 mov dl,0 int 10h ;清屏 mov ah,4ch int 21h waitf proc near push axwaitf1: in al,61h and al,10h cmp al,ah je waitf1 mov ah,al loop waitf1 pop ax ret waitf endp sound1 proc ;一个扬声器实验代码直接抄过来的呵呵 push cx push ax mov cx,1000h in al,61h and al,11111100b out 61h,al again: xor al,2 out 61h,al push cx mov cx,0ffffh continue: nop loop continue pop cx loop again pop ax pop cx sound1 endp ret delay0 proc push cx push ax mov cx,0ffffh delay1: nop mov ax,1000h delay2: dec ax jnz delay2 loop delay1 pop ax pop cx ret delay0 endp disp proc near ;这一段代码是为了显示打字结果的 menu 5, 15,fgf menu 7, 25,meg7 menu 9, 25,meg8 menu 11, 25,meg9 menu 13, 15,fgf push ax push bx mov al,score1 mov ah,0 mov bl,10 div bl mov fen3,al mov fen4,ah pop bx pop ax push ax push dx mov ah,2 mov bh,0 ;显示正确的得分 mov dl,45 mov dh,7 int 10h mov al,fen3 mov dl,al add dl,30hmov ah,2int 21hmov dl,fen4add dl,30hmov ah,2int 21hpop dxpop axpush axpush dxmov al,erroradd al,30hmov fen5,almov ah,2mov bh,0mov dl,45mov dh,9int 10hmov ah,2mov dl,fen5;显示错误的个数int 21hpop dxpop axpush axpush bxpush cxpush dxmov ah,2mov bh,0mov dl,44mov dh,11int 10hmov al,score1 mov dl,error add dl,alcmp al,dlje skipmov bl,10mul bldiv dlmov ma,al;命中率十位mov al,ahmul bldiv dlmov mb,al;命中率个位jmp next1skip:push dxlea dx,string ;如果错误为0,则命中率为100%mov ah,9int 21hpop dxjmp exit1next1:push dxmov dl,maadd dl,30hmov ah,2int 21hmov dl,mbadd dl,30hmov ah,2int 21hmov ah,2mov dl,25h ;输出'%' int 21hpop dxexit1:mov ah,1int 21hcmp al,1bh jne exit1pop dxpop cxpop bx pop ax ret disp endpcode endsend start。

VB课程设计 打字游戏

VB课程设计 打字游戏

内容摘要本有游戏主要针对指法练习,并提供字母和单词两种选择。

根据用户自身情况,可以进行速度调节,以达到最佳的练习效果。

同时本游戏提供显示时间,得分,正确率和失败个数的功能。

当失败个数超过一定个数后,游戏结束并提示是否继续。

目录内容摘要 (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时,游戏结束,并提示用户是否继续。

游戏过程中按“暂停”按钮暂停有游戏,按“退出”按钮退出游戏。

流程图游戏过程中可以按“暂停”按钮暂停有游戏,并且停止计时。

按“退出”按钮退出游戏3.1窗体控件设计图3.1 窗体界面部分窗体控件及其属性表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.V alue Thensuiji = Chr(a) '如果选择简单单选框,则函数的返回值为小写字母Elsesuiji = word(b) '如果选择复杂单选框,则函数的返回值为单词End IfEnd Function3.1.2窗体Private Sub Form_Load()Text1.Top = -1000Label6.Caption = "正确率:0"Label4.Caption = "时间00:00:00"Timer2.Enabled = FalseTimer1.Enabled = FalseLabel2.BackStyle = 0Label3.BackStyle = 0Label4.BackStyle = 0Label5.BackStyle = 0Label6.BackStyle = 0 '将标签2到6的背景设为透明For i = 0 To Label1.Count - 1Label1(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 '透明NextLabel3.Caption = "掉落个数:" & nLabel5.Caption = "当前得分:" & hLabel2.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.V alue Theni = MsgBox("输入单词后,请按空格键确认", , "注意") '操作提示End IfFor i = 0 To Label1.Count - 1Label1(i).Visible = TrueLabel1(i).Caption = suijiLabel1(i).ForeColor = RGB(Rnd * 255, Rnd * 255, Rnd * 255) '随机产生字母,单词,颜色随机NextTimer1.Enabled = TrueTimer2.Enabled = TrueHScroll1.Enabled = FalseOption1.Enabled = FalseOption2.Enabled = FalseCommand1.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("确定要退出?", vbY esNo) = vbY es ThenMsgBox "得分" & 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 <= 122 Thenci = ci + Chr(KeyAscii) '将输入的单词赋值给空字符串ciEnd Ifb = -1c = -1If Option1.V alue Then '选择简单For i = 0 To Label1.Count - 1 '遍历所有产生字母If Label1(i).Caption = Chr(KeyAscii) Then '判断产生的字母和输入的字母是否相等If Label1(i).Top > b Then '判断字母是否已经落出c = iEnd IfEnd IfNextElseIf KeyAscii = 32 Then '如果敲了空格,则进行单词比较操作For i = 0 To Label1.Count - 1 '遍历所有产生字母If Label1(i).Caption = ci Then '判断产生的单词和输入的单词是否相等If Label1(i).Top > b Then '判断字母是否已经落出c = iEnd IfEnd IfNextci = ""End IfEnd 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 - 1Label1(i).Top = Label1(i).Top + HScroll1.V alue '控制字母,单词移动,以及移动速度If Label1(i).Top > Form1.Height Thenn = n + 1 '记录掉落个数Label3.Caption = "掉落个数:" & nLabel1(i).Top = -10RandomizeLabel1(i).ForeColor = RGB(Rnd * 255, Rnd * 255, Rnd * 255) '产生颜色End IfIf n = 26 ThenIf MsgBox("已经错过" & n & "个,重新开始?", vbY esNo) = vbY es Then '提示框Form_Loadmand1_ClickElseForm_Load '控制重新游戏还是结束游戏End IfEnd IfNextEnd Sub3.1.8计时器2Private Sub Timer2_Timer()Timer2.Interval = 1000If (n + h) <> 0 ThenLabel6.Caption = "正确率:" & h / (n + h) * 100 \ 1 & "%" '显示正确率End IfStatic ss = s + 1Dim miao As StringDim fen As StringDim shi As StringIf s Mod 60 < 10 Thenmiao = 0Elsemiao = ""End IfIf (s Mod 3600) \ 60 < 10 Thenfen = 0Elsefen = ""End IfIf s \ 3600 < 10 Thenshi = 0Elseshi = ""End IfLabel4.Caption = "时间" & shi & s \ 3600 & ":" & fen & (s Mod 3600) \ 60 & ":" & miao & s Mod 60 '显示已用时间End Sub3.3程序调试及运行结果(1)选择复杂模式,按开始按钮图3.3—1 输入提示界面(2)按退出按钮,退出提示,提示得分图3.3—2 退出界面图3.3—3退出界面(3)当错过26个时,出现提示图3.3—4 游戏结束界面3.4效果及存在的问题经过一周的努力,基本达到了预期效果,比如说字母练习,单词练习,速度控制等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《VB程序设计》课程设计任务书题目:打字游戏
任务与要求:
编制一个打字练习游戏程序,使用户在游戏过程中进行指法练习。

要求程序能完整运行。

时间:2012 年 2月 15 日至 2012 年 3 月18日共 4 周
学生姓名:王凯学号: 1103860333
专业:化工与制药大类
指导教师:宋斌
2012年4月 14日
第一章课程设计目的
根据课堂讲授内容,学生做相应的自主练习,消化课堂所讲解的内容;通过做课程设计积累调试VB程序的经验;通过完成课程设计中的编程题,逐渐培养学生的编程能力、用计算机解决实际问题的能力。

本程序设计主要锻炼了对于控件数组,多模块程序设计,键盘事件处理,随机数的生成,文本文件读写,声音的播放。

第二章课程设计的要求
题目介绍:在计算机普及的今天,人们使用键盘已变的更加频繁,为了使打
字变得更加熟悉和进一步提高打字速度。

本题目要求编写一个打字练习游戏程序,使用户在游戏过程中进行执法练习。

课程设计功能要求:
<1>程序开始时在‘打字游戏设置’窗口中输入用户名,并根据设置窗口调整练习难度与打字速度。

在未输入姓名时单击查看成绩可查询历史成绩。

<2>选择好速度与难度之后,单击‘开始练习’按钮。

屏幕会随机产生并落下各种字符。

在落到屏幕底部之前,击中字符消失同时产生爆炸声,程序根据速度和难度的设置自动记录分数并显示在窗口顶部。

<3>为增加趣味性,在程序中增加背景音乐和打中时打击声。


BackMusic.mid文件作为控制打字练习的时间长度,
<4>打字练习过程中,屏幕的顶部显示已用的时间和当前的分数,如果按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.Show
Unload Me
End Sub
文本的读写编码
Private Sub cmdScore_Click()
Dim pd1 As PersonData
Dim pd2 As PersonData
Dim str As String
Dim strFind As Boolean
= 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.score, pd2.time
strFind = True
frmGrade.Text1.Text = frmGrade.Text1.Text & & Space(2) & pd2.score & "分" & Space(2) & pd2.time & Chr(13) & Chr(10)
Loop
Else
Do While Not EOF(1)
Input #1, , pd2.score, pd2.time '查找历史成绩
If = Then
strFind = True
frmGrade.Text1.Text = frmGrade.Text1.Text & & Space(2) & pd2.score & "分" & Space(2) & pd2.time & Chr(13) & Chr(10)
End If
Loop
End If
Close #1
If strFind = True Then
frmGrade.Show
Me.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程序设计,是我对课程有了进一步的了解,使自己的上级能力有了大幅度提升,这个游戏经历了很多次改动,当然每次改动都有很大的提高,每次改动都少了很多小问题,现在所看到的程序给我开始时设计的草稿版本在很多地方可以说已经大不相同,还有在这个程序中我做了一下尝试优化了定时器的控件使代码长度尽量少,在此期间也阅读了若干资料,我还是尽量的做到了最好,同时也感觉到做程序并不像想象中那么有趣和美好,也是有很多的困难和挫折,但是在老师和同学帮助下在程序成功运行的时候心中那种喜悦之情让我感觉到这一切都是值得的。

相关文档
最新文档