C++课程设计-俄罗斯方块游戏.doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《C++课程设计-俄罗斯方块游戏.doc》由会员分享,可在线阅读,更多相关《C++课程设计-俄罗斯方块游戏.doc(29页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、课 程 设 计 报 告 课程名称:面向对象程序设计C+ 设计题目: 俄罗斯方块游戏 专 业:计算机科学与技术 姓 名: 学 号: 指导教师:李 晓 虹 2015 年 1 月 10 日目 录.21需求分析.2 1.1需求分析.2 1.1.1游戏需求.2 1.1.2游戏界面需求.2 1.1.3游戏形状(方块)需求.21.2 课程设计目的.31.3 课程设计要求.32系统总体设计.32.1 程序流程图.32.2 定义方块的数据结构.42.3 游戏设计分析.52.4 开发环境.73系统详细设计 .73.1系统主界面的框架 .73.2 正常流程的设计.8 3.2.1定时机制.8 3.2.2定时处理.83
2、.3底部到达的判断与销行的实现.93.4中断操作流程的实现.93.5变形的实现.103.6游戏区域绘制的实现.104测 试.104.1 测试方案.124.2 测试结果.145 结果分析.206总 结.21参考文献.21附 录.21附录1源程序清单.211 需求分析1.1需求分析1.1.1游戏需求随机给出不同的形状(长条形、Z字形、反Z形、田字形、7字形、反7形、T字型)下落填充给定的区域,若填满一条便消掉,记分,当达到一定的分数时,过关,设置六关,每关方块下落的速度不同,若在游戏中各形状填满了给定区域,为输者。1.1.2游戏界面需求:良好的用户界面,有关数显示和分数显示。让方块在一定的区域内运
3、动和变形,该区域用一种颜色表明,既用一种颜色作为背景,最好设为黑色。还需用另一种颜色把黑色围起来,宽度适中,要实现美感。1.1.3游戏形状(方块)需求:良好的方块形状设计,绘制七种常见的基本图形(长条形、Z字形、反Z形、田字形、7字形、反7形、T字型),各个方块要能实现它的变形,可设为顺时针或逆时针变形,一般为逆时针。1.2 课程设计目的a)巩固并加深学生对C+语言程序设计知识的理解;b)培养学生面向对象的程序设计思想,使学生认识面向过程和面向对象两种设计方法的区别;c)进一步掌握和应用VC+ 6.0集成开发环境;d)提高运用C+语言解决实际问题的能力;e)初步掌握开发小型实用软件的基本方法,
4、能独立设计、实现具有实际功能的小系统;f)掌握书写程序设计开发文档的能力(书写课程设计实验报告)1.3 课程设计要求课程名称:俄罗斯方块用设计与实现俄罗斯方块游戏。要求包括系统的需求分析;系统总框图及每个模块的设计分析;MFC应用程序架构;框架的扩展;算法的设计与实现;游戏的内部实现;游戏区域绘图的实现;系统存在的问题及错误处理;列出所有定义的函数及说明;附上程序源代码。2 系统总体设计 2.1 程序流程图图2.1程序流程图图2.1.2程序调用图2.2 定义方块的数据结构对于方块在某一瞬间的位置标识,我们采用一个42的小数组标识出来,即用4个存储单位空间存储当前下坠物的每一子块的位置,也就是说
5、,用4个存储单位空间存储当前下坠物的每一子块的位置来对整个下坠物件的位置进行标识,而每个存储空间的大小就是一个典的坐标值(x,y),而每个方块按照从左到右的方向 进行编号,并且在编号过程中对于同一列的图2.2方块编号ActiveStatus00和ActiveStatus01则是第0号方块的横坐标x和纵坐标y;ActiveStatus20和ActiveStatus21则是第2号方块的横坐标x和纵坐标y2.3 游戏设计分析有前面的功能描述可知,我先虚拟出俄罗斯方块游戏的类对象,并抽象出核心的数据属性和操作方法等,然后再作细化,最后将整个虚拟类的外壳脱掉,再移植到视图类中去,其实现如下:CRectG
6、ameView:publicCView/内部存取数据结构intm_stateMapMAX_ROWMAX_COL;/初始化操作GameInitnal();/游戏的初始化/用于判断数据相关状态的操作IsLeftLimit();/下坠物件是否可向左移动IsRightLitmit();/IsBottom();/是否已经到达了底部IsGameEnd();/是否游戏已经结束/方块物件下坠过程中的操作RectChange();/下坠物件变形RectDown();/下坠物件正常下落RectArrow();/下坠物件方向移动(左,右,下加速)/状态控制操作GameStart();/游戏开始GamePause()
7、;/游戏暂停GameEnd();/游戏结束通过上面的代码可以看出,在虚拟类中抽象出了核心的内部数据和一些基本的操作函数。对于操作函数,可以把它们分为内部实现的基本核心操作(如判断操作)以及明显提供给外部使用的整体模块外部操作(如状态控制操作)。而内部的基本操作又可以分为判断操作和执行操作这样两种类型。2.4 开发环境该程序是在windows系统下的C+语言开发和应用VC+ 6.0集成开发环境。3 系统详细设计3.1系统主界面的框架首先建立一个项目工程,名为skyblue_Rect,并在AppWizard的架构选择过程中选择单文档方式,其他保持默认选项。其项目的架构类视图信息如图所示:在构架类视
8、图中是MFC基本架构组合:App(应用程序)类、Document(文档)类、View(视图)类、Frame(框架)类和用于提示关于作者的对话框CAboutDlg类,至于COptionDlg类是用作俄罗斯方块参数选择的对话框类对象。3.2 正常流程的设计3.2.1定时制机制从分析游戏的特性可以知道,定时器的产生与生效应该在游戏开始的时候,而在游戏暂停或者游戏结束时则将已经设定的定时器失效/销亡(对于暂停的情况,使它销亡,当游戏从暂停状态又进入游戏状态时候,则重新创建一个定时器并激活它的运作),所以分别在游戏的开始函数、暂停函数已经结束函数中实现定时器的激活与去激活工作。这里,先在资源编辑器菜单资
9、源里面添加三个菜单选项,分别是游戏的“开始”、“暂停”、和“结束”,然后利用ClassWizard直接在视图类对象Cskyblue_RectView中为它们添加空白的处理函数,具体如表所示:3.2.1菜单选项功能对应表3.2.2定时处理经过定时器的设置后,这里通过利用ClassWizard跳到定时器到时候的处理函数OnTimer()去实现,当固定时间片间隔到达后,先检测当前下坠物是否已经到达了底部,不是则进行RectDown()下坠物向下移动一个单位的操作,是则到底后产生一个新的“下一个下坠物”,并代替旧的,将原先旧的“下一个下坠物”用作当前激活状态下正在使用的下坠物,并对使用后的一些状态进行
10、检测:是否马上到达底部,使则进行销行操作;是否在到达底部的同时到达游戏区域的顶部,从而判定游戏是否因违规而结束。图3.2.2装在方块3.3底部到达的判断与销行的实现图3.3处理方块到达图将新的下坠物放置到游戏区域中去,这时可能出现马上到达底部的情况,因此需要对它进行判断,如果是到达底部,则进行销行处理,并且修改相应的数据状态。而判断是否已经到达了底部,可以通过当前下坠物件所对应的接触面的方块位置为被占用状态(MAP_STATE_NOT_EMPTY=1)来确定,利用数组InterFace记录17种下坠物的14种形态的接触面信息。统计分数:在消行处理里面有一个专门用来统计消行数的变量,然后根据变量
11、的值决定分数的多少,程序统计分数是:消一行得100分,同时消2行得400分,销掉x行,则分数为:x*(x*100)。如果总分数达到过关条件就过关,改变游戏速度,游戏初始化,开启新的一关,然后再加载方块。没有达到过关分数或者没有满行,则加载下一个方块继续游戏。3.4 中断操作流程的实现(1)处理键盘事件关于按键命令消息的响应,可以通过对WM_KEYDOWN消息的处理函数进行截获并重写来实现,下面是对该处理函数OnKeyDown()的重写。/功能:处理用户的输入,方块的左,右移,加速及变形voidCSkyblue_RectView:OnKeyDown(UINTnChar,UINTnRepCnt,U
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 课程设计 俄罗斯方块 游戏
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内