




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
XXXX大学C#S程设计报告打字练习小游戏院(系)别 专业 班级 学号 姓名 指导教师 二Oxx年xx月山东交通学院课程设计报告山东交通学院课程设计报告11摘要随着社会经济的发展,计算机在生活占据着越来越重要的地位,如何高效快速的使用计算机解决问题重要性尤为突出,社会竞争压力越来越大,工作与娱乐相结合更受群众喜爱。基于以上分析,我们开发了一个打字练习的小游戏。本游戏应用基于 VisualStudio2008平台的应用程序开发技术,采用C#乍为开发编程语言,实现打字游戏的练习计算机键盘按键位置及娱乐功能。该系统具有结构清晰、便于分布、实施简单、易于扩充、维护等特点,其功能主要是:在玩游戏的过程中练习打字,提高打字速度,熟悉键盘。其主要特点是操作简单,娱乐性强,可自由控制难易度。关键词:打字练习,C#g程TOC\o"1-5"\h\z\o"CurrentDocument"摘要 1目录 1\o"CurrentDocument"1概述 2\o"CurrentDocument"设计的背景和意义 2\o"CurrentDocument"设计任务分工说明 2\o"CurrentDocument"2系统分析 2\o"CurrentDocument"软件功能分析 2\o"CurrentDocument"程序流程分析 4\o"CurrentDocument"程序性能分析 43系统设计 5物理配置方案设计 5\o"CurrentDocument"数据文彳^设计 5\o"CurrentDocument"操作数据文件 6\o"CurrentDocument"界面设计 6\o"CurrentDocument"其他说明 8\o"CurrentDocument"4系统实现 8\o"CurrentDocument"5总结 10\o"CurrentDocument"参考文献 11山东交通学院课程设计报告山东交通学院课程设计报告概述设计的背景和意义设计的背景1946年,第一台计算机在美国诞生。之后随着社会经济的发展,计算机的作用与日俱增,计算机的高效运用决定了工作的效率及质量。 它被广泛运用于人们生活的各个方面,军事、工业、教育、农业等各个方面,从而更好的推动经济的增长。同系列的其他打字游戏的功能主要包括熟悉字母,提高辨识、确认字母能力,特殊的还具有计时和惩罚奖励,调节游戏速度功能。我们的打字游戏在实现以上的所有功能外还有所创新,不仅游戏方式新颖,还具有分数换取游戏次数的机制,使得游戏可玩性大大加强。设计的意义随着计算机的更进一步普及,人们熟练掌握计算机运用已经成为衡量一个优秀人才的重要指标。打字速度的快慢直接影响工作的质量和效率。打字游戏,主要是培养电脑新手更快的掌握计算机的键盘布局以及特性, 为以后更快更便捷的使用键盘做基础。同时,它也是一款休闲益智的小游戏,可供人们在闲暇时刻放松自己。这样既能娱乐又能练习打字速度,不失为一款好游戏。设计任务分工说明本设计的完成者包括:XX和XX,其中XX主要负责分析程序,从网上及其图书馆浏览他人程序进行剖析利用,进一步改进游戏程序。 XX主要负责系统的总体方向,及其个别控件的利用及其实现,主要是课程设计报告的编写及其排版等。2系统分析软件功能分析该游戏的整体功能设计如图2.1所示
打字游戏积分换生命开始打字游戏积分换生命开始图2.1游戏整体功能图各部分的功能说明:此软件模仿了其他同类游戏的部分功能,简单易用,可以对游戏有直观的行认识,其游戏界面如图2.2鼠潴累湾从资开始! 一.. 一 [口I叵图2.2登陆界面展示
程序流程分析该程序主要实现对提高打字速度的能力,我们进入界面后点击游戏控制中的开始,可以进行游戏,根据用户所完成的情况,适当调节游戏速度,暂停为用户提供了一个遇忙的时间,而积分兑换是当用户失误的时候补救的一个措施, 游戏中。根据用户所完成的结果会适当的给用户积分, 一般需要付出一定的积分,才能换回一条生命值,用户也可以不选择积分兑换。系统流程如图 2.3。图2.3系统流程图程序性能分析该软件由于是初级程序编写修改练习,因此处理方便简单易行,不需要很多的电脑专业知识,初学者也可熟练掌握。该程序的运行环境是Windows系统,兼容性好,可以普遍的应用于各个计算机的各个系统,共享性良好。3系统设计物理配置方案设计由于是小容量的小游戏,因而可以在任何完整配置的电脑中使用,不存在兼容性以及使用要求问题。游戏编写运用了MicrosoftVisualStudio2008,游戏时只需要普通的自带打开软件即可。数据文件设计本游戏的设计程序主要有两个表构成,它们分别为游戏规则表与游戏构造表,如图数据文件截图卜面是游戏构造文件示例性展示,如图3.1.2市打字游说myRandooi ▼白dasznyianlon(sliticint_i-L.|i publicgstChv(intItn)Istrict]char=n”武打M口『A, JF",飞‘「工'口",TT.TTJF**T):飞,T.V,干,丁:TTJY,丁卜?.anlonraid;ttrin*itr=whi1e(true)Iif(jtr.Length==lui)treak:ruid-TieRgndpm(D^terinf.JTpw.IIi11isecand*_i)i;iltr-rand.ITe^t(0,2S)i:tstr.工ndej£lEC_dur[rD!=-1](Etr-}str'二_cKarLr];■■3.2游戏内容表卜面是游戏规则文件示例性展示,如图3.1.3return;ItkiSutimerrlie.Interval-tim>e;ArrazListal-nwMi■期Li式0:〃在故已经沉;建|最僵部的在艮0中的Lyftireich(Di:tionaryintrydeinhllab)(-北力lit-(L小白JJ艇.VslmifaabLocation.IKthis.Sire.Height-90){〃如果1处坐标大于栩序最询-迎行必DisMstO:/廨臬l*bsi.显也®.liy):/施当苗hashfi1怔电了存入arr承ist〃落地球生命thu.T^t二噪"+Q“gt/50:+1)4哪生副配”+_lift+"分数:"+_count.}*1"ifaal.Lotfttion.X<3SD龌lab.Locition.I>250){Lotahon=nmQab.Loc&tian.K,lab.LocatiuLT+nlu):3.1.3游戏规则表操作数据文件启动MicrosoftVisualStudio2008运行程序,即可开始游戏界面设计本软件主要包括两部分:游戏控制和游戏难度。游戏控制里又有三个控制按钮,分别为开始,暂停和积分兑换。开始和暂停键分别控制着游戏的进程状态。每成功击打一个飘落字母,便可获得一个积分,积分兑换作用是将玩家游戏过程中成功积攒的积分转换为玩家的生命值, 每十个积分可换一次生命值。此设置大大加强游戏的可玩性。本游戏主要有主界面、开始界面与结束界面构成,如图图3.4.1主界面图3.4.2开始界面图3.4.3结束界面3.1.5 积分换生命界面3.4其他说明由于时间仓促,其中让字母实现交叉飘动没能够完成, 在后期我们会进一步设计和完善。4系统实现publicvoidflutter(inttime,intvalue){if(_life<=0)stop();MessageBoxShow("生命值为0,游戏结束!","对不起");return;}this.timerrate.Interval=time;ArrayListal=newArrayList(); 〃存放已经沉淀到最底部的 lab在hash中的keyforeach(DictionaryEntrydein_htlab){Labellab=(Label)de.Value;if(lab.Location.Y>=this.Size.Height-80){ 〃如果lab坐标大于本程序最底部-80执行lab.Dispose(); //销毁labal.Add(de.Key); //把当前hash的key存入arraylist_life--; //落地减生命this.Text= "第"+((_count/50)+1)+ "关您的生命值:”+_life+ "分数:"+_count;}elseif(lab.Location.X<350&&lab.Location.X>250){lab.Location= newPoint(lab.Location.X,lab.Location.Y+value);}elseif(lab.Location.X>350){lab.Location= newPoint(lab.Location.X-value,lab.Location.Y+value);}else{lab.Location= newPoint(lab.Location.X+value,lab.Location.Y+value);}//让lab像屏幕下方移动for(inti=0;i<al.Count;i++) //循环从hash移除已经不显示的lab{_htlab.Remove(al[i]);}}这里重点修改了字符飘动的轨迹5总结经过这次课程设计,我们完成了自己选择的打字母小游戏课题,有挺多的收获。虽然程序最后是完成了,但是实现的过程中却遇到了很多问题。 平时感觉挺简单的那些枯燥单调的代码,真正到了自己运用的时候却无从下手; 好不容易写出来的一大段代码,一经调试却跳出来一大堆的错误;还有就是这最后的课程设计报告书,平时都不怎么碰的word文档,文档处理、排版又成了令人头疼的一大问题。但是,解决问题的过程恰是不断学习的过程:平时所学的一小段一小段的代码到现在必须把它们联系起来使用,把平时学的知识运用到实际,增强了我的实践动手能力;面对一大堆的错误,只得一个个找出来,一个个改掉,一遍遍的调试,一行行代码的运行,不断地重复,最终将错误改正,这番痛苦的过程让我学们会了如何调试运行,如何逐行逐语句运行,锻炼了我调试、测试程序的能力;同时,报告书的书写,让我们学会了word文档的排版以及文档处理,学会如何做出美观整齐的课程设计报告书。课程设计中遇到的问题只凭自己苦思冥想是不能全部解决的, 这是同学老师的建议和网络给了我很大的帮助。遇到自己解决不了的问题时,多多向老师同学请教,或许问题就能迎刃而解。另外,生在这个信息化社会,互联网的作用不言而喻,许多问题只要在网上搜索一下就能得到非常令人满意的解答。 此次课程设计锻炼了我和老师同学交流的能力,以及网上搜索资源,筛选信息的能力
参考文献1明日科技,C#从入门到精通,北京.清华大学出版社,20082付强丁宁,C#编程实战宝典,北京清华大学出版社,2014201420113毕文斌孙明亮,C#Windows201420114齐立波,C趴门经典,北京,清华大学出版社,第五版5王小科,王军,C#FF发实战1200例,北京,清华大学出版社,附录1:项目源码usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Collections;//Hashtableaddnamespace打字游戏{publicpartialclassForm1:Form{//私有字段Hashtable_htlab=newHashtable();//存放lab控件int_count=0; //游戏分数int_life=10; //生命值,小于0死亡,过关生命10publicForm1(){InitializeComponent();}///<summary>///开始游戏///</summary>///<paramname="sender"></param>///<paramname="e"></param>privatevoidTSMenuItemStart_Click(objectsender,EventArgse){this.timerlab.Enabled=true;this.timerrate.Enabled=true;this.timerrate.Interval=1;this.timerlab.Interval=1;_count=0;_life=10;if(_htlab==null)_htlab= newHashtable();}〃/<summary>///暂停游戏///</summary>〃/<paramname="sender"></param>///<paramname="e"></param>privatevoidTSMenuItemPause_Click(objectsender,EventArgse){this.timerlab.Enabled=false;this.timerrate.Enabled=false;}///<summary>/// 让字符飘动的定时器Tick事件///</summary>///<paramname="sender"></param>///<paramname="e"></param>privatevoidtimerrate_Tick(objectsender,EventArgse){//调用飘动方法,设置飘动速度为10毫秒移动(_count/50)+1个大小的位置flutter(10,(_count/50)+6);}//产生字符的定时事件privatevoidtimerlab_Tick(objectsender,EventArgse){〃调用产生字符方法,每888-(_count/50)*200 毫秒产生一个字号20的字符create(888-(_count/50)*200,20);}///<summary>///游戏结束时状态///</summary>publicvoidstop(){this.timerlab.Enabled=false;this.timerrate.Enabled= false;foreach(DictionaryEntry dein_htlab){Labell=(Label)de.Value;l.Dispose();}this.Text="游戏结束,请从新开始!";}///<summary>/// 让屏幕控件飘动方法〃/ </summary>///<paramname="time">飘动速度</param>///<paramname="value”>飘动范围-在软件上移动的范围</param>publicvoidflutter(inttime,intvalue){if(_life<=0){stop();MessageBoxShow("生命值为0,游戏结束!","对不起");return;}this.timerrate.Interval=time;ArrayListal=newArrayList();//存放已经沉淀到最底部的lab在hash中的keyforeach(DictionaryEntrydein_htlab){Labellab=(Label)de.Value;if(lab.Location.Y>=this.Size.Height-80){ //如果lab坐标大于本程序最底部-80执行lab.Dispose(); //销毁labal.Add(de.Key); //把当前hash的key存入arraylist_life--; //落地减生命this.Text= "第"+((_count/50)+1)+ "关您的生命值:"+_life+ "分数:"+_count;}elseif(lab.Location.X<350&&lab.Location.X>250){lab.Location= newPoint(lab.Location.X,lab.Location.Y+value);}elseif(lab.Location.X>350){lab.Location= newPoint(lab.Location.X-value,lab.Location.Y+value);}else{lab.Location= newPoint(lab.Location.X+value,lab.Location.Y+value);}//让lab像屏幕下方移动}for(inti=0;i<al.Count;i++) //循环从hash移除已经不显示的lab{_htlab.Remove(al[i]);}}〃/ <summary>/// 从屏幕产生字符///</summary>///<paramname="value">产生速度-毫秒</param>///<paramname="font">字体大小</param>publicvoidcreate(intvalue,intfont){this.Text="第"+((_count/50)+1)+ "关您的生命值:"+_life+ "分数:"+_count;this.timerlab.Interval=value; //设置产生速度毫秒Labellab=newLabel();lab.AutoSize=true;lab.Font=newFont("MicrosoftSansSerif",font,FontStyle.Regular,GraphicsUnit.Point,0); //设置字体Randomr=newRandom);lab.ForeC010r=Color.FromArgb(r.Next(100,255),r.Next(100,255),r.Next(100,255)); //随机生成颜色//屏幕随机出现位置lab.Location=newPoint((this.Size.Width-50)-r.Next(0,( this.Size.Width-50)),28);string_char= newmyRandor().getChar(1); //获取随机出来的字符stringlabname="";//lab名字inti=0; 〃临时计数器存储当前界面上的lab是否存在本次生成的字母个数foreach(DictionaryEntrydein_htlab){if(de.Key.ToString().IndexOf(_char)!=-1){i++;}}labname=_char+(i* DateTime.Now.Millisecond);lab.Name=labname; 〃设置lab名字,防止打乱顺序lab.Text=_char; //让止匕lab显示生成的字符this.Controls.Add(lab);//把本次随机出的lab放入Hashtable集合,方便验证_htlab.Add(labname,lab);}privatevoidTSMenuItemLife_Click(objectsender,EventArgse){if(_count>=10){_life++;_count-=10;this.Text="您的生命值:"+_life+ "分数:"+_count;}elseMessageBoxShow("您的游戏积分不足10!","对不起");}//判断用户输入字符的事件privatevoid
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学生行为心理的探索与教育策略
- 艾灸灸法培训课件图片
- 2025年中国丁基钠黄药数据监测研究报告
- 教育科技品牌的发展趋势与挑战
- 医疗心理服务的市场需求与发展趋势分析
- 教育4.0以创新引领未来教育模式
- 教育数据与校园安全管理优化
- 公交优先战略2025年城市交通拥堵治理的公共交通与城市社会治理协同报告
- Chloranocryl-Dicryl-生命科学试剂-MCE
- 安徽师范大学《产品摄影》2023-2024学年第一学期期末试卷
- GB/T 33804-2025肥料级腐植酸钾
- 2025至2030全球及中国公共广播和语音报警系统(PAVA)行业发展趋势分析与未来投资战略咨询研究报告
- 2025至2030中国电蚊拍行业发展趋势分析与未来投资战略咨询研究报告
- 体动脉-肺动脉转流术之术后监护要点
- 2025至2030中国腻子粉行业市场发展现状及发展趋势与投资报告
- 女性职场礼仪
- 2025年湖北省中考语文真题(解析版)
- 维修安全生产管理制度
- 《小学生心理健康教育》试题及答案
- 2024年全球及中国神经康复外骨骼机器人行业头部企业市场占有率及排名调研报告
- 某镇“十五五”发展规划编制思路
评论
0/150
提交评论