打字练习小游戏_第1页
打字练习小游戏_第2页
打字练习小游戏_第3页
打字练习小游戏_第4页
打字练习小游戏_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、XXXX大学C#S程设计报告打字练习小游戏院(系)别 专 业 班 级 学 号 姓 名 指导教师Oxx年xx月山东交通学院课程设计报告摘要随着社会经济的发展,计算机在生活占据着越来越重要的地位,如何高效快速的使 用计算机解决问题重要性尤为突出,社会竞争压力越来越大,工作与娱乐相结合更受群 众喜爱。基于以上分析,我们开发了一个打字练习的小游戏。本游戏应用基于VisualStudio 2008平台的应用程序开发技术,采用C#乍为开发编程语言,实现打字游戏的练 习计算机键盘按键位置及娱乐功能。该系统具有结构清晰、便于分布、实施简单、易于 扩充、维护等特点,其功能主要是:在玩游戏的过程中练习打字,提高打

2、字速度,熟悉 键盘。其主要特点是操作简单,娱乐性强,可自由控制难易度。关键词:打字练习,C#g程1摘要1目 录11概述21.1 设计的背景和意义21.2 设计任务分工说明 22系统分析22.1 软件功能分析22.2 程序流程分析 42.3 程序性能分析 43系统设计53.1 物理配置方案设计53.2 数据文彳设计53.3 操作数据文件 63.4 界面设计63.5 其他说明84系统实现85总结10参考文献11山东交通学院课程设计报告1概述1.1 设计的背景和意义1.1.1 设计的背景1946年,第一台计算机在美国诞生。之后随着社会经济的发展 ,计算机的作 用与日俱增,计算机的高效运用决定了工作的

3、效率及质量。它被广泛运用于人们生活的各个方面,军事、工业、教育、农业等各个方面,从而更好的推动经济的 增长。同系列的其他打字游戏的功能主要包括熟悉字母,提高辨识、确认字母能力, 特殊的还具有计时和惩罚奖励,调节游戏速度功能。我们的打字游戏在实现以上 的所有功能外还有所创新,不仅游戏方式新颖,还具有分数换取游戏次数的机制, 使得游戏可玩性大大加强。1.1.2 设计的意义随着计算机的更进一步普及,人们熟练掌握计算机运用已经成为衡量一个优秀人 才的重要指标。打字速度的快慢直接影响工作的质量和效率。 打字游戏,主要是 培养电脑新手更快的掌握计算机的键盘布局以及特性,为以后更快更便捷的使用键盘做基础。同

4、时,它也是一款休闲益智的小游戏,可供人们在闲暇时刻放松自 己。这样既能娱乐又能练习打字速度,不失为一款好游戏。1.2 设计任务分工说明本设计的完成者包括:XX和XX ,其中XX主要负责分析程序,从网上及其图书馆浏览他人程序进行剖析利用,进一步改进游戏程序。XX主要负责系统的总体方向,及其个别控件的利用及其实现,主要是课程设计报告的编写及其排 版等。2系统分析2.1 软件功能分析该游戏的整体功能设计如图2.1所示打字游戏游戏控制开始暂停积分换生命图2.1游戏整体功能图各部分的功能说明:此软件模仿了其他同类游戏的部分功能,简单易用,可以对游戏有直观的行 认识,其游戏界面如图2.2鼠潴累 湾从资开始

5、!一 . .一 口 I叵图2.2登陆界面展示2.2 程序流程分析该程序主要实现对提高打字速度的能力,我们进入界面后点击游戏控制中的 开始,可以进行游戏,根据用户所完成的情况,适当调节游戏速度,暂停为用户 提供了一个遇忙的时间,而积分兑换是当用户失误的时候补救的一个措施,游戏中。根据用户所完成的结果会适当的给用户积分,一般需要付出一定的积分,才能换回一条生命值,用户也可以不选择积分兑换。系统流程如图2.3。图2.3系统流程图2.3 程序性能分析该软件由于是初级程序编写修改练习, 因此处理方便简单易行,不需要很多 的电脑专业知识,初学者也可熟练掌握。该程序的运行环境是 Windows系统, 兼容性

6、好,可以普遍的应用于各个计算机的各个系统,共享性良好。3系统设计3.1 物理配置方案设计由于是小容量的小游戏,因而可以在任何完整配置的电脑中使用, 不存在兼容性 以及使用要求问题。游戏编写运用了 Microsoft Visual Studio 2008 ,游戏时 只需要普通的自带打开软件即可。3.2 数据文件设计本游戏的设计程序主要有两个表构成,它们分别为游戏规则表与游戏构造 表,如图数据文件截图卜面是游戏构造文件示例性展示,如图3.1.2市打字游说myRandooi白 dasz nyianlon(slitic int _i - L .|ipublic gstChv (int

7、Itn)Istrict char = n” 武打M口A,JF",飞工' 口",TT. TTJF* T): 飞,T. V, 干,丁: TTJ Y,丁卜?.anlon raid;ttrin* itr =whi 1 e (true)Iif (jtr. Length = lui) treak:ruid - Tie Rgndpm (Dterinf.JTpw. IIi 11 isecand * _i)i;ilt r - rand. ITet (0, 2S)i: tstr.工ndej£lEC_durrD != -1 (Etr - str '二 _cKar Lr;

8、 3.2游戏内容表16卜面是游戏规则文件示例性展示,如图3.1.3return;Itki Su timerr lie. Interval - tim>e ;ArrazList al - nw Mi期Li式0 : 在故已经沉;建|最僵部的在艮0中的Ly ftireich (Di: ti onaryintry de in hllab) (-北力lit - (L小白JJ艇.Vslmif aab Location. I K this. Sire. Height - 90) 如果1处坐标大于栩序最询-迎行1 必 DisMstO: /廨臬l*bsi.显也®. liy) : /施当苗hash

9、fi1怔电了存入arr承i st落地球生命thu.Tt 二噪" + Q“gt / 50: + 1) 4 哪生副配”+ _lift + "分数:"+ _count.*1"if aal.Lotfttion.X <3SD 龌 lab.Locition.I >250) Lotah on = nm Qab. Loc&tian. K , lab. LocatiuLT + nlu):3.1.3游戏规则表3.3 操作数据文件启动Microsoft Visual Studio 2008运行程序,即可开始游戏3.4 界面设计本软件主要包括两部分:游戏控制

10、和游戏难度。游戏控制里又有三个控制按钮,分别为开始,暂停和积分兑换。开始和暂停 键分别控制着游戏的进程状态。每成功击打一个飘落字母,便可获得一个积分, 积分兑换作用是将玩家游戏过程中成功积攒的积分转换为玩家的生命值,每十个积分可换一次生命值。此设置大大加强游戏的可玩性。本游戏主要有主界面、开始界面与结束界面构成,如图图3.4.1 主界面图3.4.2开始界面图3.4.3结束界面3.1.5积分换生命界面3.4其他说明由于时间仓促,其中让字母实现交叉飘动没能够完成,在后期我们会进一步设计和完善。4系统实现public void flutter( int time, int value)if (_li

11、fe <= 0)stop();MessageBoxShow("生命值为0,游戏结束!","对不起");return ;this .timerrate.Interval = time;ArrayList al = new ArrayList ();存放已经沉淀到最底部的lab在hash中的keyforeach ( DictionaryEntry de in _htlab) Label lab = ( Label )de.Value;if (lab.Location.Y >= this .Size.Height - 80)如果lab坐标大于本程序

12、最底部-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 =new Point (lab.Location.X ,lab.Location.

13、Y + value);else if (lab.Location.X >350) lab.Location =new Point (lab.Location.X -value,lab.Location.Y + value); else lab.Location =new Point (lab.Location.X +value,lab.Location.Y + value);/让lab像屏幕下方移动for ( int i = 0; i < al.Count; i+)/ 循环从 hash移除已经不显示的 lab_htlab.Remove(ali); 这里重点修改了字符飘动的轨迹5总结

14、经过这次课程设计,我们完成了自己选择的打字母小游戏课题,有挺多的收获。虽然程序最后是完成了,但是实现的过程中却遇到了很多问题。平时感觉挺简单的那些枯燥单调的代码,真正到了自己运用的时候却无从下手;好不容易写出来的一大段代码,一经调试却跳出来一大堆的错误;还有就是这最后的课程设计报 告书,平时都不怎么碰的 word文档,文档处理、排版又成了令人头疼的一大问 题。但是,解决问题的过程恰是不断学习的过程: 平时所学的一小段一小段的代 码到现在必须把它们联系起来使用, 把平时学的知识运用到实际,增强了我的实 践动手能力;面对一大堆的错误,只得一个个找出来,一个个改掉,一遍遍的调 试,一行行代码的运行,

15、不断地重复,最终将错误改正,这番痛苦的过程让我学 们会了如何调试运行,如何逐行逐语句运行,锻炼了我调试、测试程序的能力; 同时,报告书的书写,让我们学会了 word文档的排版以及文档处理,学会如何 做出美观整齐的课程设计报告书。课程设计中遇到的问题只凭自己苦思冥想是不能全部解决的,这是同学老师的建议和网络给了我很大的帮助。遇到自己解决不了的问题时,多多向老师同学请教, 或许问题就能迎刃而解。另外,生在这个信息化社会,互联网的作用不言而喻, 许多问题只要在网上搜索一下就能得到非常令人满意的解答。此次课程设计锻炼了我和老师同学交流的能力,以及网上搜索资源,筛选信息的能力参考文献1明日科技,C#从入

16、门到精通,北京.清华大学出版社,20082付强丁宁,C#编程实战宝典,北京清华大学出版社,2014201420113毕文斌 孙明亮,C#Windows游戏设计,北京/青华大学出版社,4齐立波,C趴门经典,北京,清华大学出版社,第五版5王小科,王军,C#FF发实战1200例,北京,清华大学出版社,附录1 :项目源码using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System

17、.Windows.Forms;using System.Collections; /Hashtable addnamespace打字游戏public partial class Form1 : Form/私有字段Hashtable _htlab = new Hashtable (); / 存放 lab 控件int _count = 0;/ 游戏分数int _life = 10;/生命值,小于0死亡,过关生命10public Form1()InitializeComponent();/ <summary>/ 开始游戏/ </summary>/ <param name

18、="sender"></param>/ <param name="e"></param>private void TSMenuItemStart_Click( object sender, EventArgs e)this .timerlab.Enabled = true ;this .timerrate.Enabled = true ;this .timerrate.Interval = 1;this .timerlab.Interval = 1;_count = 0;_life = 10;if (_htlab

19、 = null )_htlab =new Hashtable ();/ <summary>/暂停游戏/ </summary>/ <param name="sender"></param>/ <param name="e"></param>private void TSMenuItemPause_Click( object sender, EventArgs e)this .timerlab.Enabled = false ;this .timerrate.Enabled = fals

20、e ;/ <summary>/让字符飘动的定时器Tick事件/ </summary>/ <param name="sender"></param>/ <param name="e"></param>private void timerrate_Tick( object sender, EventArgs e)/调用飘动方法,设置飘动速度为10毫秒移动(_count / 50) + 1 个大小的位置 flutter(10, (_count / 50) + 6);/产生字符的定时事件pr

21、ivate void timerlab_Tick( object sender, EventArgs e)调用产生字符方法,每 888-(_count / 50) * 200毫秒产生一个字号20的字符create(888 - (_count / 50) * 200, 20);/ <summary>/ 游戏结束时状态/ </summary>public void stop()this .timerlab.Enabled = false ;this .timerrate.Enabled =false ;foreach ( DictionaryEntryde in _htla

22、b)Label l = ( Label )de.Value;l.Dispose();this .Text ="游戏结束,请从新开始!";/ <summary>/让屏幕控件飘动方法/</summary>/ <param name="time"> 飘动速度 </param>/ <param name="value”>飘动范围-在软件上移动的范围 </param> public void flutter( int time, int value)if (_life <= 0

23、)stop();MessageBoxShow("生命值为0,游戏结束!","对不起");return ;this .timerrate.Interval = time;ArrayList al = new ArrayList (); /存放已经沉淀到最底部的lab在hash中的key foreach ( DictionaryEntry de in _htlab)Label lab = ( Label )de.Value;if (lab.Location.Y >= this .Size.Height - 80)/如果lab坐标大于本程序最底部-80执

24、行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 =new Point (lab.Location.X ,lab.Location.Y

25、+ value);elseif (lab.Location.X >350)lab.Location =new Point (lab.Location.X -value,lab.Location.Y + value); elselab.Location =new Point (lab.Location.X +value,lab.Location.Y + value);/让lab像屏幕下方移动for ( int i = 0; i < al.Count; i+)/ 循环从 hash移除已经不显示的 lab_htlab.Remove(ali);/<summary>/从屏幕产生字

26、符/ </summary>/ <param name="value"> 产生速度-毫秒 </param>/ <param name="font"> 字体大小 </param>public void create( int value, int font)this .Text ="第"+ (_count / 50) + 1) +"关 您的生命值:"+ _life +"分数:"+ _count;this .timerlab.Interval

27、 = value;/ 设置产生速度毫秒Label lab = new Label ();lab.AutoSize = true ;lab.Font = new Font( "Microsoft Sans Serif" , font, FontStyle .Regular, GraphicsUnit .Point, 0);/ 设置字体Randomr = new Random);lab.ForeC010r = Color .FromArgb(r.Next(100, 255),r.Next(100, 255),r.Next(100, 255);/ 随机生成颜色/屏幕随机出现位置l

28、ab.Location = new Point ( this .Size.Width - 50)-r.Next(0, (this .Size.Width - 50), 28);string _char =new myRandor().getChar(1);/ 获取随机出来的字符string labname = "" /lab 名字int i = 0;临时计数器存储当前界面上的lab是否存在本次生成的字母个数foreach ( DictionaryEntry de in _htlab)if (de.Key.ToString().IndexOf(_char) != -1)i+;

29、labname = _char + (i *DateTime.Now.Millisecond);lab.Name = labname;设置lab名字,防止打乱顺序lab.Text = _char;/让止匕lab显示生成的字符this .Controls.Add(lab);/把本次随机出的lab放入Hashtable集合,方便验证 _htlab.Add(labname, lab);private void TSMenuItemLife_Click( object sender, EventArgs e) if (_count >= 10)_life+;_count -= 10;this .

30、Text ="您的生命值:"+ _life +"分数:"+ _count;elseMessageBoxShow("您的游戏积分不足10!","对不起");/判断用户输入字符的事件private void mainFrm_KeyUp(object sender, KeyEventArgs e) foreach ( DictionaryEntry de in _htlab) if (de.Key.ToString().IndexOf( Convert.ToChar(e.KeyCode) != -1) Label lab = ( Label )_htlabde.Key;lab.BackColor =Color .White;lab.Dispose();/ 销毁 lab_htlab.Remove(de.Key);/ 从has

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论