资源描述:
《俄罗斯方块课程设计报告书》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、专业资料课程设计俄罗斯方块班级:***学号:***word完美格式专业资料目录一、课程设计的目的与要求31.1课程设计的目的31.2课程设计的要求3二、设计正文32.1需求分析32.1.1游戏需求32.2.2游戏界面需求:32.1.3游戏形状(方块)需求:32.2算法分析42.2.1程序流程图42.2.2定义方块的数据结构62.2.3游戏设计分析7三系统设计83.1创建界面的主框架83.2正常流程的设计83.2.1定时制机制83.2.2定时处理94.1底部到达的判断与销行的实现104.2中断操作流程的实现134.3变形的实现144.4游戏
2、区域绘图的实现154.5功能的完善154.6游戏演示164.7主程序源程序清单17六、参考文献32word完美格式专业资料用VC++实现俄罗斯方块的程序设计一、课程设计的目的与要求1.1课程设计的目的综合运用所学知识,熟练掌握VC++程序设计的编码与MFC框架结构。1.2课程设计的要求要求用VC++设计与实现俄罗斯方块游戏。要求包括系统的需求分析;系统总框图及每个模块的设计分析;MFC应用程序架构;框架的扩展;算法的设计与实现;游戏的内部实现;游戏区域绘图的实现;系统存在的问题及错误处理;列出所有定义的函数及说明;附上程序源代码。二、设计
3、正文2.1需求分析2.1.1游戏需求随机给出不同的形状(长条形、Z字形、反Z形、田字形、7字形、反7形、T字型)下落填充给定的区域,若填满一条便消掉,记分,当达到一定的分数时,过关,设置六关,每关方块下落的速度不同,若在游戏中各形状填满了给定区域,为输者。游戏功能要求如下:2.2.2游戏界面需求:良好的用户界面,有关数显示和分数显示。让方块在一定的区域内运动和变形,该区域用一种颜色表明,既用一种颜色作为背景,最好设为黑色。还需用另一种颜色把黑色围起来,宽度适中,要实现美感。2.1.3游戏形状(方块)需求:良好的方块形状设计,绘制七种常见的
4、基本图形(长条形、Z字形、反Z形、田字形、7字形、反7形、T字型),各个方块要能实现它的变形,可设为顺时针或逆时针变形,一般为逆时针。word完美格式专业资料2.2算法分析2.2.1程序流程图到达底部部到达底部,游戏结束到达底部部结束销行操作生成下一个下坠物将新生的下坠物代替旧的“下一个下坠物“将旧的“下一个下坠物”用作当前下坠物销行操作游戏结束处理下降一个单位开始word完美格式专业资料刷新游戏结束重新游戏下一个图行达到指定位置达到指定位置显示屏幕信息按向上键游戏开始否按键7.OnTimer()10.IsBottom()12.RectC
5、hange()9.OnDraw()6.invalidatecurrent()8.GamePaush()5.RectDown()11.KeyDown()13.GameEnd()1.Main()2.Rectview()3.Gamestart()4.DrawGame()图2.2.3程序运行调用图2.2.2定义方块的数据结构对于方块在某一瞬间的位置标识,我们采用一个4×2的小数组标识出来,即用4个存储单位空间存储当前下坠物的每一子块的位置,也就是说,用4个存储单位空间存储当前下坠物的每一子块的位置来对整个下坠物件的位置进行标识,而每个存储空间的
6、大小就是一个典的坐标值(x,y),而每个方块按照从左到右的方式进行编号,并且在编号过程中对于同一列的方块实行从上到下进行编号[2]。0123(x0,y0)(x1,y1)(x2,y2)(x3,y3)word完美格式专业资料2301(x0,y0)(x1,y1)(x2,y2)(x3,y3)方块编号ActiveStatus[0][0]和ActiveStatus[0][1]则是第0号方块的横坐标x和纵坐标y;ActiveStatus[2][0]和ActiveStatus[2][1]则是第2号方块的横坐标x和纵坐标y。2.2.3游戏设计分析有前面的功
7、能描述可知,我先虚拟出俄罗斯方块游戏的类对象,并抽象出核心的数据属性和操作方法等,然后再作细化,最后将整个虚拟类的外壳脱掉,再移植到视图类中去,其实现如下:CRectGameView:publicCView{//内部存取数据结构intm_stateMap[MAX_ROW][MAX_COL];//初始化操作GameInitnal();//游戏的初始化//用于判断数据相关状态的操作IsLeftLimit();//下坠物件是否可向左移动IsRightLitmit();//IsBottom();//是否已经到达了底部IsGameEnd();//是
8、否游戏已经结束//方块物件下坠过程中的操作RectChange();//下坠物件变形RectDown();//下坠物件正常下落RectArrow();//下坠物件方向移动(左,右,下加速)//