《C++课程设计-连连看1.doc》由会员分享,可在线阅读,更多相关《C++课程设计-连连看1.doc(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、课 程 设 计 报 告 课程名称:面向对象程序设计C+ 设计题目:连连看 专 业:计算机科学与技术 姓 名: 学 号: 指导教师:李 晓 虹2015 年 12 月 10 日摘要在计算机逐步渗入社会生活各个层面的今天,计算机已经成为人们日常生活不可或缺的一部分,越来越多的人使用计算机办公、娱乐、购物等等。游戏行业发展一日千里,该行业极大的影响和改变了人们的生活和娱乐方式,游戏为消费者提供丰富多彩的虚拟空间,使消费者可以自由自在的享受虚拟世界的乐趣,实现自己在现实生活着那个可能永远不能实现的梦想,满足了消费者的心理和精神需求。连连看游戏是一款很流行的小游戏,有的是连水果图片,有的是连麻将牌,有的是
2、连各种小图片的等等。各种图片让人看得眼花缭乱,这也可以锻炼人的反应能力和眼力,所以这款小游戏受到了越来越多人的喜爱,尤其是小孩子的喜爱。连连看游戏也是比较经典的一款小游戏,实现它的方法很多,可以用很多不同算法设计和语言实现,如C,C#,C+,VB,JAVA等。在本课程设计中我是利用C+语言编写,开发平台是MicrosoftVisualStudio2010,功能较为简单,寓学于乐。程序的功能是通过找出游戏中两个相同图案的小方块,然后分别点击两个小方块将其消除;可通过倒计时的方式控制游戏时间,游戏时间到或者没有匹配的图案时则游戏结束,需要重新开局,每一局开始倒计时都重新开始;能够响应鼠标事件。论文
3、首先介绍了进行该游戏课程设计的目的,然后是任务描述和设计的相关要求,最后是最重要的需求分析和设计方案。重点介绍了在游戏过程中各种事件的处理,其中又以鼠标事件的处理最为最要,鼠标事件是利用鼠标所发出的信息了解用户的意图,进而做出相对应的动作,消除需要消除的小方块。关键词:连连看游戏;算法设计;事件;C+,MicrosoftVisualStudio2010 第一章 系统需求分析1.1 功能分析每次用户选择两个相同的小方块,如果小方块满足一定条件(这两个小方块之间存在转弯少于3的路径),则两个小方块可以消掉,给定任意具有相同图案的两个小方块,用户需要寻找这两个小方块之间在转弯最少的情况下,如果这个最
4、优路径的转弯数目小于3,则这两个小方块可以消掉。所以,主要需要解决的问题就是怎么样得出相同小方块之间的最优路径,这个最优路径首先需要保证转弯数目最少。游戏开始时,系统会在游戏区域中随机布下12*7个不同图案的小方块。第一次使用鼠标点击游戏界面中的小方块,该小方块此时为被选中状态,再次用鼠标点击其他小方块,若该小方块与被选中的小方块图案相同,且把第一个小方块到第二个小方块连起来,连线的路径中间的直线不超过3根(最多两次转弯),则消掉这一对小方块,否则第一个小方块恢复成未被选中状态,而第二个小方块变成“被选中”状态。每次消除一对小方块会增加一定的时间。胜利条件:将游戏区域上的小方块全部消除掉且时间
5、未消耗完。失败条件:时间消耗完,或者剩下的小方块没有路径能够匹配(即界面上的小方块仍未全部消掉)。1.2 功能需求(1)游戏界面大致分为两大区,左边为游戏操作区,右边是设置区;(2)本游戏功能较为简单,只具有连连看游戏的基本功能(计时器、积分器、暂停/重新开始、重列),默认的图案种类数是12种,重复数每种图案为7对;(3)游戏操作区是系统自动排列的默认的12*7个小方块,用户可以点击小方块来消除具有相同图案的小方块;(4)设置区中显示当前游戏的种类数、重复数、“开始游戏”按钮、“重列”按钮、“暂停/重新开始”按钮和得分情况;(5)在游戏操作区的下方显示有“剩余时间”的进度条,当进度条的时间耗完
6、时,则游戏结束。1.3 功能模块本游戏主要细分为以下几大模块:(1)游戏主界面以MicrosoftVisualStudio2010为开发平台设计主界面,主要控件有1个主窗体Form、1个groupbox、1个progressbar、4个button、7个label。(2)随机排列小方块。(3)鼠标事件。(4)小方块消除判断。(5)游戏难度设置本游戏没有用户自定义游戏难度选择,而是使用默认的图案种类数是12种,每种图案的重复数是7对,所以游戏的灵活性较差。(6)游戏重列对本局游戏中剩下的小方块重新排列,计时器不会暂停。此模块的主要作用就是在用户自身不能找到能够消掉的小方块的情况下,通过重列剩下的
7、小方块来产生新的路径,使游戏能够继续玩下去。(7)暂停/重新开始,点击“暂停”按钮能够使当前正在运行的游戏暂时停止,主要是使让时间停止,不再倒计时;游戏暂停时鼠标不能对游戏操作区域进行操作,此时“暂停”按钮变成“重新开始”按钮,用户只要点击“重新开始”按钮即可继续游戏操作。(8)游戏胜利(游戏结束,需要重新开始游戏)。(9)游戏失败(游戏结束,需要重新开始游戏)。1.4 系统需求分析总结本系统的结构基本合理,系统功能也基本能够达到连连看游戏的要求,采用了最基本的最短路径优先的算法,使系统地运行效率达到最高。本系统的输入边界是用户进行的鼠标事件操作和对游戏的复杂程度进行设置;输出边界是游戏结束,
8、游戏胜利或者游戏失败。通过对连连看游戏规则以及相关算法的分析,本系统总的数据量较小,规模不是很大,适合于在普通微机或小型机上运行。第二章 总体设计2.1 系统基本功能本系统与我们常玩的连连看游戏相比较为简单,只具有连连看游戏的基本功能,逻辑设计方面也只有简单的“开始游戏”、“重列”、图案“种类数”和“重复数”的设定、剩余时间和暂停/重新开始。开始游戏:初始化游戏区域,随机排列小方块。重列:对正在进行的游戏中剩余的小方块重新排列。种类数:本游戏固定图案种类是12种。重复数:每种图案的重复次数是7次,也就是7对。剩余时间:计时器,通过显示时间进度的方式对游戏进行倒计时。暂停/重新开始:暂停正在运行
9、的游戏,游戏暂停后也可以重新开始(继续本局游戏)。系统基本功能如图2-1所示图 2-1 系统基本功能图图2-1是连连看游戏的系统基本功能图,从图中可以看出系统主要分为六大功能,即开始游戏、重列、种类数、重复数、剩余时间和暂停/重新开始的设置。2.2 系统流程系统流程是对系统进行大概分析后得出的系统各功能的流动情况以及各个操作之间的关系,上一步操作都与下一步操作有着紧密的联系,即下一步操作都是由上一步操作所决定的。系统流程主要是对系统流程图的分析,系统流程图清晰的地反映出了系统的运行情况和走向。(1)鼠标事件具体流程图如图2-2所示束。图 2-2 鼠标事件具体流程图图2-2是鼠标事件的具体流程图
10、,在连连看游戏中,鼠标事件是很重要的一部分,因为基本都是考鼠标去操作的,所以鼠标事件的控制就非常重要了;上图就是鼠标在游戏过程中的具体判断过程,主要是两个相同小方块之间路径的判断,分为一条直线(没有转弯)、两条直线(一个转弯)、三条直线(两个转弯)。(2)系统详细运行流程如图2-3所示图 2-3 运行流程图图2-3是游戏详细的运行流程图,图中清晰地描述了系统的执行过程,即根据不同的事件,游戏状态的转换。过程为:游戏开始,等待事件,发出鼠标事件,根据用户发出的鼠标命令,然后进行各种判断,系统分别作出不同的反应。2.3 主要功能模块本游戏主要细分为以下几大模块:Private void Form1
11、_MouseDown(object sender, MouseEventArgse)/最重要的鼠标事件Private void ProcessCorner(Point p1, Point p2)/此方法做处理画线和消除Private void button1_Click_1(object sender, EventArgs e)/开始游戏按钮Private void button2_Click(object sender, EventArgs e) /重列按钮Private void button3_Click(object sender, EventArgs e) /暂停/重新开始按钮Pri
12、vate void pbtimer_Tick(object sender, EventArgs e) /计时器操作,判断游戏是否失败Public boolIsDirectLink(int x1, inty1, int x2, int y2) /判断两个小方块是否为直连关系,即判断两个小方块之间是否能用一条之间连接(没有转弯)Public bool IndirectLink(int x1, int y1, int x2, int y2)/处理直连以外的情况,即一个转弯和两个转弯的情况游戏)。第三章 详细设计3.1 详细设计总体设计是对整个系统的结构化和模块化设计,包括各功能模块的设计和各个功能函
13、数的说明。详细设计则是对各个类和功能函数进行具体的定义和实施。下面是对系统中几个较为重要的函数进行描述。在总体设计中提到过要想消掉两个小方块,可以分为三种情况,下面就是三种情况的详细解释。3.2 规则设计1、两个相同的小方块相邻,则可以直接消掉。2、若不相邻的先在第一个小方块的同一行中找一个空方块;1)找到后看第二个小方块横向到这个空方块所在的列是否有小方块;2)没有的话再看第一个小方块到与它同行的那个空方块之间是否有小方块;3)如果还是没有的话,再从与第一个小方块同行的那个空方块竖向到与第二个小方块的同行看是否有其他的小方块。没有的话路经就是通了,则可以将两个小方块消掉。3、若上述2失败后,
14、再在第一个小方块的同列找一个空方块;1)找到后看第二个小方块竖向到这个空方块所在的行是否有小方块;2)没有的话,再看第一个小方块到与它同列的那个空方块之间是否有小方块;3)如果还是没有的话,再从与第一个小方块同列的那个空方块横向到与第二个小方块同列看是否有其他的小方块。没有的话路经就是通了,则可以将两个小方块消掉。如果以上三步都失败,说明这两个按钮不可以消掉。两个小方块能够相连并消掉的所有情况如图3-1所示图 3-1 运行流程图(1)两个小方块相邻,可以直接消掉;(2)两个小方块在同一行上面且不相邻,但中间没有其他方块阻挡;(3)两个小方块在同一行上,但中间有其他图案的小方块阻隔;(4)两个小
15、方块在同一列,但中间有其他图案的小方块阻隔;(5)两个小方块既不在同一行也不在同一列,用三条直线连接(因为第一个小方块的右边可能有其他小方块阻隔);(6)两个小方块既不在同一行也不在同一列,用两条直线连接(第一个小方块的某一方正好可以连接到第二个小方块);(7)两个小方块既不在同一行也不在同一列,用三条直线连接(系统自动检测,连线从第一个小方块的空闲的一面引出。3.3 部分代码本游戏部分代码如下:(1).全局定义:HBITMAP hbmp;HBITMAP fullmap;HBITMAP animal;HDC mdc;int map84;int x,y;int row=7,col=12;int
16、begin=0;(2).void change(int num )函数,用于重新随机排列数组num 中的数值void change(int num)int i,temp,p;for(i=0;i21;i+) p=rand()%21; temp=numi; numi=nump; nump=temp;(3). void StartGame(HDC hdc)函数,用于绘制界面void StartGame(HDC hdc) int i,j,k=0,num21,n=0; HDC buff; buff=CreateCompatibleDC(hdc); fullmap=CreateCompatibleBitm
17、ap(hdc,480,350); SelectObject(mdc,fullmap); hbmp=(HBITMAP)LoadImage(NULL,3DFrames.bmp,IMAGE_BITMAP,46,392,LR_LOADFROMFILE); SelectObject(buff,hbmp); for( i=0;i12;i+) for(j=0;j7;j+) BitBlt(mdc,i*40,j*50,46,56,buff,0,56,SRCCOPY); BitBlt(hdc,0,0,480,350,mdc,0,0,SRCCOPY); animal=(HBITMAP)LoadImage(NULL,
18、animal.bmp,IMAGE_BITMAP,78,1638,LR_LOADFROMFILE); SelectObject(mdc,animal); if(begin=0) for(i=0;i21;i+) numi=rand()%42; for(i=0;i84;i+) mapi=-1; for(i=0;i7;i+) for(j=0;j12;j+) if(k=21) change(num); k=0; mapn=numk; n+; k+; k=0; for(i=0;i7;i+) for(j=0;j12;j+) BitBlt(hdc,j*40,i*50+5,39,39,mdc,39,mapk*3
19、9,SRCAND);BitBlt(hdc,j*40,i*50+5,39,39,mdc,0,mapk*39,SRCPAINT);k+; 图 3-2 代码图第四章 系统调试4.1 系统调试系统调试是对整个系统的相应程序问题进行调试,包括功能模块的调试和各个整体系统的调试。下面是相应系统调试图:图 4-1 系统调试图1图 4-2 系统调试图2图 4-3 系统调试图3图 4-4 系统调试图4图 4-5 系统调试图5第5章 结果分析5.1 结果分析系统界面分析这一部分主要是系统的运行与维护等,在这里展出了系统的部分运行效果图,并对这些界面进行了分析。(1) 游戏主界面如图5-1所示图 5-1图5-1是游
20、戏主界面,图案种类数是12,每种图案的最大重复数是7,进入此界面,用户可以开始玩此游戏。 (2) 游戏过程界面如图5-2所示图 5-2图5-2是游戏过程界面,玩家点击相同相连的两图标就可以消除图案。(3) 通关过程界面如图5-3所示图 5-3图5-3是游戏通关界面,当玩家通过规则消除了所有图案,系统自动弹出恭喜过关字样,玩家点击确定开始下一局。第6章 总结首先感谢老师给我们一次实训的机会。通过这次课程设计,让我充分体会到了理论与实践相结合的重要性。通过我们所学过的知识,通过网上查找资料详细了解这个连连看游戏,在这个过程中我们学到了很多书本上学不到的东西,我在写程序的时候也遇到了很多问题,不过在
21、自己的努力下完成了任务。在这次课程设计中,我不断的上网查资料以及翻阅相关书籍,通过不断的摸索、测试、发现问题、解决问题,在老师的帮助下这些问题都一一得到了解决,使得程序能够正常运行。在此游戏的设计过程中,遇到了很多问题,有些问题比较简单但就是不知道错在哪里,有些大问题知道错在哪里但就是不知道怎么办,后来经过自己的不断修改和调试,这些问题都得到了解决。经过这次课程设计,我认识到应该注意的细节问题,虽然是很小的问题,但可以提高自己编程的能力,而且还可以培养自己编程的严谨性,同时还可以为以后的编程积累经验。编写完这个连连看游戏,我发现自己有很多不足的地方,感触最深的就是我真的要扎扎实实的打基础。并且
22、我感觉到只要肯下功夫学习,我也可以做出很好的东西,深深明白,只有自己的东西才是最珍贵的。总之,通过这次课程设计,我学到了很多,也收获了很多,这包括学习上的和生活中的。尽管可能这个系统中还存在一些问题,但我觉得还是很高兴,因为是自己的最重要。1. 基于C8051F单片机直流电动机反馈控制系统的设计与研究2. 基于单片机的嵌入式Web服务器的研究 3. MOTOROLA单片机MC68HC(8)05PV8/A内嵌EEPROM的工艺和制程方法及对良率的影响研究 4. 基于模糊控制的电阻钎焊单片机温度控制系统的研制 5. 基于MCS-51系列单片机的通用控制模块的研究 6. 基于单片机实现的供暖系统最佳
23、启停自校正(STR)调节器7. 单片机控制的二级倒立摆系统的研究8. 基于增强型51系列单片机的TCP/IP协议栈的实现 9. 基于单片机的蓄电池自动监测系统 10. 基于32位嵌入式单片机系统的图像采集与处理技术的研究11. 基于单片机的作物营养诊断专家系统的研究 12. 基于单片机的交流伺服电机运动控制系统研究与开发 13. 基于单片机的泵管内壁硬度测试仪的研制 14. 基于单片机的自动找平控制系统研究 15. 基于C8051F040单片机的嵌入式系统开发 16. 基于单片机的液压动力系统状态监测仪开发 17. 模糊Smith智能控制方法的研究及其单片机实现 18. 一种基于单片机的轴快流
24、CO,2激光器的手持控制面板的研制 19. 基于双单片机冲床数控系统的研究 20. 基于CYGNAL单片机的在线间歇式浊度仪的研制 21. 基于单片机的喷油泵试验台控制器的研制 22. 基于单片机的软起动器的研究和设计 23. 基于单片机控制的高速快走丝电火花线切割机床短循环走丝方式研究 24. 基于单片机的机电产品控制系统开发 25. 基于PIC单片机的智能手机充电器 26. 基于单片机的实时内核设计及其应用研究 27. 基于单片机的远程抄表系统的设计与研究 28. 基于单片机的烟气二氧化硫浓度检测仪的研制 29. 基于微型光谱仪的单片机系统 30. 单片机系统软件构件开发的技术研究 31.
25、 基于单片机的液体点滴速度自动检测仪的研制32. 基于单片机系统的多功能温度测量仪的研制 33. 基于PIC单片机的电能采集终端的设计和应用 34. 基于单片机的光纤光栅解调仪的研制 35. 气压式线性摩擦焊机单片机控制系统的研制 36. 基于单片机的数字磁通门传感器 37. 基于单片机的旋转变压器-数字转换器的研究 38. 基于单片机的光纤Bragg光栅解调系统的研究 39. 单片机控制的便携式多功能乳腺治疗仪的研制 40. 基于C8051F020单片机的多生理信号检测仪 41. 基于单片机的电机运动控制系统设计 42. Pico专用单片机核的可测性设计研究 43. 基于MCS-51单片机的
26、热量计 44. 基于双单片机的智能遥测微型气象站 45. MCS-51单片机构建机器人的实践研究 46. 基于单片机的轮轨力检测 47. 基于单片机的GPS定位仪的研究与实现 48. 基于单片机的电液伺服控制系统 49. 用于单片机系统的MMC卡文件系统研制 50. 基于单片机的时控和计数系统性能优化的研究 51. 基于单片机和CPLD的粗光栅位移测量系统研究 52. 单片机控制的后备式方波UPS 53. 提升高职学生单片机应用能力的探究 54. 基于单片机控制的自动低频减载装置研究 55. 基于单片机控制的水下焊接电源的研究 56. 基于单片机的多通道数据采集系统 57. 基于uPSD323
27、4单片机的氚表面污染测量仪的研制 58. 基于单片机的红外测油仪的研究 59. 96系列单片机仿真器研究与设计 60. 基于单片机的单晶金刚石刀具刃磨设备的数控改造 61. 基于单片机的温度智能控制系统的设计与实现 62. 基于MSP430单片机的电梯门机控制器的研制 63. 基于单片机的气体测漏仪的研究 64. 基于三菱M16C/6N系列单片机的CAN/USB协议转换器 65. 基于单片机和DSP的变压器油色谱在线监测技术研究 66. 基于单片机的膛壁温度报警系统设计 67. 基于AVR单片机的低压无功补偿控制器的设计 68. 基于单片机船舶电力推进电机监测系统 69. 基于单片机网络的振动
28、信号的采集系统 70. 基于单片机的大容量数据存储技术的应用研究 71. 基于单片机的叠图机研究与教学方法实践 72. 基于单片机嵌入式Web服务器技术的研究及实现 73. 基于AT89S52单片机的通用数据采集系统 74. 基于单片机的多道脉冲幅度分析仪研究 75. 机器人旋转电弧传感角焊缝跟踪单片机控制系统 76. 基于单片机的控制系统在PLC虚拟教学实验中的应用研究77. 基于单片机系统的网络通信研究与应用 78. 基于PIC16F877单片机的莫尔斯码自动译码系统设计与研究79. 基于单片机的模糊控制器在工业电阻炉上的应用研究 80. 基于双单片机冲床数控系统的研究与开发 81. 基于
29、Cygnal单片机的C/OS-的研究82. 基于单片机的一体化智能差示扫描量热仪系统研究 83. 基于TCP/IP协议的单片机与Internet互联的研究与实现 84. 变频调速液压电梯单片机控制器的研究 85. 基于单片机-免疫计数器自动换样功能的研究与实现 86. 基于单片机的倒立摆控制系统设计与实现 87. 单片机嵌入式以太网防盗报警系统 88. 基于51单片机的嵌入式Internet系统的设计与实现 89. 单片机监测系统在挤压机上的应用 90. MSP430单片机在智能水表系统上的研究与应用 91. 基于单片机的嵌入式系统中TCP/IP协议栈的实现与应用92. 单片机在高楼恒压供水系
30、统中的应用 93. 基于ATmega16单片机的流量控制器的开发 94. 基于MSP430单片机的远程抄表系统及智能网络水表的设计95. 基于MSP430单片机具有数据存储与回放功能的嵌入式电子血压计的设计 96. 基于单片机的氨分解率检测系统的研究与开发 97. 锅炉的单片机控制系统 98. 基于单片机控制的电磁振动式播种控制系统的设计 99. 基于单片机技术的WDR-01型聚氨酯导热系数测试仪的研制 100. 一种RISC结构8位单片机的设计与实现 101. 基于单片机的公寓用电智能管理系统设计 102. 基于单片机的温度测控系统在温室大棚中的设计与实现103. 基于MSP430单片机的数
31、字化超声电源的研制 104. 基于ADC841单片机的防爆软起动综合控制器的研究105. 基于单片机控制的井下低爆综合保护系统的设计 106. 基于单片机的空调器故障诊断系统的设计研究 107. 单片机实现的寻呼机编码器 108. 单片机实现的鲁棒MRACS及其在液压系统中的应用研究 109. 自适应控制的单片机实现方法及基上隅角瓦斯积聚处理中的应用研究110. 基于单片机的锅炉智能控制器的设计与研究 111. 超精密机床床身隔振的单片机主动控制 112. PIC单片机在空调中的应用 113. 单片机控制力矩加载控制系统的研究 项目论证,项目可行性研究报告,可行性研究报告,项目推广,项目研究报告,项目设计,项目建议书,项目可研报告,本文档支持完整下载,支持任意编辑!选择我们,选择成功!项目论证,项目可行性研究报告,可行性研究报告,项目推广,项目研究报告,项目设计,项目建议书,项目可研报告,本文档支持完整下载,支持任意编辑!选择我们,选择成功!单片机论文,毕业设计,毕业论文,单片机设计,硕士论文,研究生论文,单片机研究论文,单片机设计论文,优秀毕业论文,毕业论文设计,毕业过关论文,毕业设计,毕业设计说明,毕业论文,单片机论文,基于单片机论文,毕业论文终稿,毕业论文初稿,本文档支持完整下载,支持任意编辑!本文档全网独一无二,放心使用,下载这篇文档,定会成功!