1、0计算机科学与技术学院C 高级语言程序设计课程设计报告(2012/2013 学年 第一学期)学生姓名: 赵喆专业班级: 计算机 112001 班学 生 学 号 : 201120010130指导教师: 胡静2012 年 12 月 30 日1字符下落游戏的设计与实现 2目 录第一章 课程设计目的及要求 3第二章 课程设计的任务内容 4第三章 详细设计说明 53.1 函数功能说明 .53.1.1 系统功能模块 .53.1.2 主要函数功能 .53.2 参数说明 63.3 函数流程图 .63.4 编码及调试 .83.4.1 菜单选项 83.4.2 随机出现的字符下落 .103.4.3 用户输入及判断正
2、误 .113.4.4 ESC 返回到菜单 .12第四章 软件测试方案 13第五章 软件使用说明 14第六章 课程设计的心得和体会 15附录 1:参考文献 .16附录 2:程序清单 .173第一章 课程设计目的及要求本课程设计的目的是通过设计一个字符下落游戏,培养应用 C 高级语言的设计方法及思想解决实际问题的能力,同时掌握使用面向对象程序设计语言。熟悉面向对象开发平台 Visual C+6.0,提高调查研究、查阅技术资料以及编写技术文献的能力。本课程设计的要求是运用 C 高级语言程序课程所学的概念、理论和方法,按照C 高级语言程序设计的基本步骤,设计出一个适当规模的字符下落游戏程序来实现设计课
3、程内容中的全部功能;编写程序对给出的程序源代码要给出各部分的详细注释。4第二章 课程设计的任务内容利用 Microsoft Visual C+编写一个字符下落游戏,要求为:显示菜单界面,提供给用户三个选项, “单个字符游戏” , “多个字符游戏” , “退出” 。并且实现基本的游戏功能,在单个字符游戏中,每次显示一个字符从屏幕上方下落,在落到底部前,用户从键盘输入与屏幕显示的字符相同为正确。落到底部时未输入相同的为错误。在多个字符游戏中,屏幕上一次隔多行同时下落多个字符(每行一个,屏幕上有多个字符) ,在落到底部前,用户从键盘输入与屏幕显示的某个字符相同为正确。字符落到底部时未输入相同的为错误
4、。运行游戏的同时将正确次数即时显示。若游戏结束,用户可以按 ESC 返回到菜单界面。5第三章 详细设计说明3.1 函数功能说明3.1.1 系统功能模块该游戏的要实现的功能包括:单个字符游戏、多个字符游戏、退出游戏,可以用下图表示。3.1.2 主要函数功能(1)菜单选项:提供给用户单个字符、多个字符、退出三个选项,选择相应的选项可以实现相应的功能。(2)随机出现的字符下落:随机选择字符并将其输出,并且有下落的效果;(3)用户输入、判断正确及正确次数即时显示:在下落的过程,用户可以输入字符,若输入的字符与显示的字符相同,下落的字符消失;若输入错误,记录到错误计数器里并即时显示。(4)ESC 返回到
5、菜单:游戏运行结束,用户按下 ESC 键,回到有菜单的界面。字符下落游戏退出游戏单个字符游戏 多个字符游戏图 3-1 功能模块图63.2 参数说明(1)菜单选项函数:void MenuChoice();(2)字符下落的效果:1)时间间隔效果,计时器: SetTimer( HWND hWnd, UINT_PTR nIDEvent, UINT nElapse, TIMERPROC lpTimerFunc): HWND hWnd, 窗口句柄 ;UINT_PTR nIDEvent,定时器 ID;UINT nElapse,时间间隔;TIMERPROC lpTimerFunc 回调函数 2)字符消失效果:
6、void CharDisappear()(3)用户输入及判断功能:void Judge();(4)按 ESC 退出游戏:void Exit();3.3 函数流程图流程图是由一些图框和流程线组成的,其中图框表示各种操作的类型,图框中的文字和符号表示操作的内容,流程线表示操作的先后次序。 根据分析后的程序结构图设计出相应的流程图。字符下落的内容主要包括游戏开始,显示菜单选项,选择相应的选项进入相应的功能;以选择单个字符游戏为例,开始后随机选择的字符会下落,用户随时输入,若输入的与下落的字符相同,字符消失;若不一样无响应。同时可以响应 Esc 按键,提示是否退出程序。如图 3.2 所示。7单个字符游
7、戏开始 多个字符游戏开始开始退出结束YY是否结束游戏N正确次数加 1字符消失显示正确数保存数据结束子函数运行,显示菜单界面NY N Y 新 的 字 符 下 落 是 否 相 符 用 户 输 入 字 符 消 失 Y N Y Countrigh+ Counter+ 字 符 下 落 到 底 是 否 结 束 游 戏 保 存 数 据 结 束 子 函 数 运 行 , 显 示 菜 单 界 面 错误次数加 1字符下落到底新的字符下落是否相符用户输入YY是否结束游戏N正确次数加 1字符消失显示正确数保存数据结束子函数运行,显示菜单界面NY N Y 新 的 字 符 下 落 是 否 相 符 用 户 输 入 字 符 消
8、 失 Y N Y Countrigh+ Counter+ 字 符 下 落 到 底 是 否 结 束 游 戏 保 存 数 据 结 束 子 函 数 运 行 , 显 示 菜 单 界 面 错误次数加 1字符下落到底新的字符下落是否相符用户输入图 3-2 流程图83.4 编码及调试3.4.1 菜单选项提供给用户单个字符、多个字符、退出三个选项,选择相应的选项可以实现相应的功能。void MenuChoice()char ch=0;coutch;if (ch=S)CView:OnPaint();Simplemain();break;if (ch=M)CView:OnPaint();Mutiplemain()
9、;break;if (ch=E)break;if (ch!=Sif(i=3) cout“你输入的次数已用完!“endl;图 3-3 菜单图 3-4 单个字符游戏103.4.2 随机出现的字符下落随机选择字符并将其输出,并且有下落的效果:在这里我导入的是 MFC 的 CWnd 类中的 SetTimer 函数和 CView 类,使得其分别实现的隔一定时间输出一次和输过的字符在下一次显示时消失。计时器函数void IntervalTime()SetTimer(NULL,1,1000,TimeProc);MSG msg; while(GetMessage(void CALLBACK TimeProc(
10、HWND hwnd,UINT message,UINT idTimer,DWORD dwTime)char SimCh=z;for(cout“a timer comming“endl;导入类#include “C:ProgramFilesMicrosoft Visual StudioVC98MFCIncludeAFXWIN.H“类的定义class CView : public CWnd使用到的界面刷新函数定义virtual void OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint);virtual void OnDraw(CDC* p
11、DC) = 0;113.4.3 用户输入及判断正误在下落的过程,用户可以输入字符,若输入的字符与显示的字符相同,下落的字符消失;若输入错误,记录到错误计数器里并即时显示。用一个选择结构作判断即可,正确次数用一个整型变量记录。图 3-5 字符下落图 3-5 下落效果图 3-6 用户输入及判断123.4.4 ESC 返回到菜单游戏运行结束,用户按下 ESC 键,回到有菜单的界面;导入 MFC 中的键盘消息响应机制,按下 ESC,使得界面刷新,显示菜单选项。void GameOver()HWND wnd = GetHWnd();if (MessageBox(wnd, _T(“游戏结束。n 您想重新来
12、一局吗?“), _T(“游戏结束“),MB_YESNO | MB_ICONQUESTION) = IDYES)NewGame();elseQuit();图 3-7 ESC13第四章 软件测试方案以测试多个为例,可以看见依次实现了用户菜单选择,字符下落,用户输入,系统判断,ESC 返回菜单,运行结果如下:经过调试和修改,程序完全实现设计要求,成功实现了字符下落的运行过程和游戏效果,只是界面略微简陋,但已从程序层面上实现了游戏,达到了这次课程设计的要求和目的。程序正常生成字符,实现字符下落效果和判断机制,如有操作按键按下,根据按键实现判断或者返回菜单响应,根据用户选择,决定是否退出游戏。14第五章
13、 软件使用说明打开字符下落游戏后,根据菜单选项的提示,按下相应的字符选择想要进入的游戏;进入游戏后会出现随机一个或多个字符下落的界面,根据下落的字符按下相应的按键,若与下落的字符相同则正确,否则错误,同时界面会即时显示正确的次数;ESC 代表返回菜单键。15第六章 课程设计的心得和体会课程设计是培养学生综合运用所学知识、发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。 在这次课程设计的过程中,我深深地体会到了理论与实践结合的过程。当实践成功时的成就感,从整个过程中我受益匪浅。 从确定了题目,一直到完成整个大作业,在整整四周的日子里,我学到很多的
14、东西。不仅可以巩固了以前所学过的知识,并且发掘了很多在已有的书本上所没有的知识。在设计的过程中遇到问题很平常,从没见过的,没有任何头绪解决的。这毕竟第一次做的,问题就肯定难免。而解决这些问题的过程,给我带来了极大的收获。首先是规范程序设计的流程,以前遇到程序有了思路就直接编程,现在不仅懂了需要先写功能模块,再写流程图,而且能驾轻就熟。再是对以往学的可视化编程有了进一步的理解,在这个黑的界面下依旧可以引用可视化里现成的类,MFC 的大框架只不过是在 DOS 上建立的一大类库。最后是参考能力,以前不会了就很浮躁,想问这个同学想问那个老师,现在能利用一切资源,图书馆的书籍,百度文库等等。通过几个礼拜的设计,我的游戏渐渐初见成效了,当我把回车键摁下的一刹那,我十分激动,眼前的既熟悉又陌生的游戏出现在了我的面前,看着自己设计的童年时代经常玩的游戏,我感慨万千。通过这次设计,我学会了很多东西,例如通过网络资料来寻求帮助,自己改正错误,加强了我自己的自己动手能力,对今后的学习和生活有很多的帮助。 16附录 1:参考文献1.Visual C+完全自学手册 机械工业出版社第一版 古万荣2.C+俄罗斯方块游戏百度文库 太原科技大学华科学院 王奥辉 http:/ 谭浩强 4.C 程序设计 清华大学第四版 谭浩强17附录 2:程序清单