C++俄罗斯方块课程设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

华科学院计算机科学与技术系《软件工程课程设计》报告----俄罗斯方块游戏(2011/2012学年第一学期)学生姓名:王奥辉专业班级:信息管理102202H学生学号:201022040217指导教师:王艳2011年12月30日软件工程课程设计目录第一章系统概述1.1课程设计的目的和要求------------------------------------------11.2课程设计任务内容----------------------------------------------11.3关于编译软件--------------------------------------------------1第二章详细设计说明--------------------------------------------------22.1程序设计-------------------------------------------------------22.1.1主要功能设计-------------------------------------------22.1.2程序流程图---------------------------------------------22.2参数说明-------------------------------------------------------32.2.1类设计声明(view类)----------------------------------32.2.2类设计声明(squar类)---------------------------------42.3函数功能说明---------------------------------------------------52.3.1游戏界面-----------------------------------------------52.3.2生成方块-----------------------------------------------52.3.3方块变形-----------------------------------------------62.3.4方块显示-----------------------------------------------62.3.5障碍判断-----------------------------------------------72.3.6消行计分-----------------------------------------------72.3.7暂停退出-----------------------------------------------72.4程序调试-------------------------------------------------------92.5软件使用说明---------------------------------------------------9第三章心得与体会----------------------------------------------------10附录1---------------------------------------------------------------11附录2---------------------------------------------------------------11软件工程课程设计1第一章系统概述1.1课程设计的目的和要求俄罗斯是家喻户晓的益智小游戏,选择这个题目一是为了将自己的所学知识加以运用,二是俄罗斯方块是我第一个接触到的游戏,它的实现方法也吸引着我。我希望通过探索实践去实现它,在这次学习中从实践和实际的项目中提高自己的编程能力。因此我选定了这个题目。C++课程所学的概念、理论和方法,按照C++程序设计的基本步骤,设计出一个适当规模的程序来实现设计课程内容中的全部功能;设计主控模块程序.对给出的程序源代码要给出各部分的详细注释.自己根据能力及需要添加相应功能模块,增强模拟系统功能。1.2课程设计任务内容利用MicrosoftVisualC++编写一个文本窗口下的俄罗斯方块游戏。要求:(1)利用类和多文件编写。(2)能够记录游戏得分和等级。(3)可暂停/继续游戏,使玩家在不愿游戏时退出。(4)信息提示时显示颜色变化。1.3关于编译软件本程序采用MicrosoftVisualC++6.0的英文版本进行编译。VisualC++6.0是Microsoft公司推出的基于Windows操作系统的可视化C++编程工具,尽管Microsoft公司推出了.NET平台的集成开发环境,但由于其良好的界面和可操作性,加上支持标准C/C++规范,但仍有相当多的编程人员使用VisualC++6.0进行应用系统的开发。关于稳定性,经测试,本程序可以在windows操作系统中稳定运行,较为稳定。软件工程课程设计2第二章详细设计说明2.1程序设计2.1.1主要功能设计根据分析,俄罗斯方块这个程序一共要实现如下几个功能,开始游戏、游戏的暂停\继续、游戏控制和退出游戏。其中游戏控制最为主要和重要,它控制着整个游戏的画面和有关数据的操作,是游戏的核心部分。暂停和退出功能做成一体,在退出的提示下不做任何操作即可实现暂停的功能。程序结构如图2.1所示。图2.12.1.2程序流程图根据分析后的程序结构图设计出相应的流程图。俄罗斯方块的内容主要包括游戏开始,画背景和边框,显示分数等级和下一个方块的预览图;根据速度没隔一定时间方块自动下落,当有按键操作时,根据相应按键执行动作,每次动作前要判断是否动作可以执行。下落方块满一行时,消去该行,根据消去行数得到相应分数。分数达到一定程度,等级提升,速度加快。同时可以响应Esc按键,提示是否退出程序。如图软件工程课程设计32.2所示。图2.22.2参数说明根据程序的结构,将俄罗斯方块需要实现的功能细化为相应的类成员函数。程序有两个类,一个view类,用于背景相关操作。一个squar类,用于方块相关操作。2.2.1类设计声明(view类)classview{public:view();//类的缺省构造函数intgetbgdata(int,int);//取得数组x,y点的数据值软件工程课程设计4voidscoreadd(int);//得分增加,根据消去行数voidscorereset();//得分清零,用于升级后voidlevelup();//等级提升,当分数达到规定值后执行intgameover();//游戏结束voidrowdelete();//消除满行voidpreviewset(int(*p)[4]);//设置预览方块的形状数据voidpreviewreset();//预览方块数据清零voidsetdata(int(*)[2]);//设置主游戏区数据值voiddatareset();//主游戏区数据清零voiddrawpreview();//显示预览方块private:intdata[25][26];//主游戏区数组intpreview[4][4];//预览方块数组introwsdelete;//每次消除行数变量intscore;//得分变量intscorelevel;//升级规定值变量intlevel;//等级变量booloverflag;//结束标记变量voidscorelevelup();//升级规定值提升};2.2.2类设计声明(squar类)classview;//先向引用声明classsquar{public:squar();//类的缺省构造函数squar(squar&);//拷贝构造函数软件工程课程设计5friendvoidcursor(int,int);//友元函数控制光标位置voidgetcursor(int&,int&);//取得位置记录坐标voidmake();//随机产生一个方块voidgetmake(int(*p)[4]);//取得方块数据值voiddraw();//显示主方块voiddrop(view&);//方块下落voidchange();//方块变形intmeet(int);//判断方块周围是否有障碍voidtorecord(int(*)[2]);//传送需要记录的数据voidreset();//方块数组清零intmoveflag;//方块运动标记变量private:voidmove();//方块运动intshape[4][4];//方块形状数据intx,y;//坐标intshapeindex;//方块形状序号intchangeindex;//变形序号变量intspeed;//下落速度变量};2.3函数功能说明2.3.1游戏界面俄罗斯方块的游戏界面包括游戏区域边框、下落方块绘制、右部计分和预览图显示等。游戏区域边框的绘制比较简单,循环中确定光标的位置输出特定字符,即可完成边框绘制。游戏区方块的绘制,循环从数据数组中依次读出数据,根据读到的数据显示“□”,最后组成方块的形状,完成方块的绘制。计分和预览图部分先画出一个矩形区域,然后控制光标在其中显示分数、等级、预览图和提示信息。软件工程课程设计62.3.2生成方块本程序中生成的方块有六种形状,每一种方块以shapeindex标记,在程序运行生成方块时,调用shapeindex=rand()%5+1;语句,确定当前要显示的是哪一个方块形状。而在实际运行中,第一次需要调用两次生成方块函数make(),将先产生的赋给游戏当前方块,第二个赋给预览图方块。以后每次产生一个方块,把预览方块赋给当前方块,把新产生的赋给预览方块。具体如图2.3所示。图2.32.3.3方块变形俄罗斯方块的特点就在于通过方块的变形拼满整行来消去该行方块从而使游戏可以继续下去,很难想象不能变形的俄罗斯方块是什么样子。而变形的过程就是根据当前方块形状改变方块的相对位置,这样就可以改变方块的形状了。在程序中每当按下Up键,程序判断可以变形后,根据当前方块的形状序号shapeindex和变化形状序号changeindex调用相应的方块数值赋给draw()函数,通过刷新重画就可以显示变化后的方块了。具体形状变化如图2.4所示。2.3.4方块显示以上方块的操作都是数据层面的操作,而真正要在游戏窗口中看到数据的变化,还必须把方块不断的绘制出来。这就是draw()函数的作用。把当前运动的方块对应节软件工程课程设计7点存储在一个4*4数组里,变形和生成方块的过程就是更新该数组数据的过程。然后在draw()函数里检测数组的各个值,并控制光标跳到一定位置,画出“□”组成方块。具体方块对应数组数值关系如图2.5所示。图2.42.3.5障碍判断障碍判断,就是在方块运动中或者变形中判断周围是否有障碍阻碍下落、移位、变形。当方块下落遇到下面有方块或者到达下边界则应停止下落并记录数据,存入背景数据数组。变形时应判断这个变形是否可以进行,如果有障碍则不能变形。例如当方块达到右边界,而若变形则会越过边界,那么这个变形的命令是不应执行的。所有这些判断都由meet()函数进行,根据是否有障碍返回1或0,再由其他函数接收执行相应操作。2.3.6消行计分游戏玩家拼满一行后,程序消去满行,并计分。中当一个方块下落停止后,程序检查方块是否充满了游戏区域,如果是结束游戏。不是,则判断是否构成消行条件,从下落方块的最低点依次向上检查是否可以消行,根据消去行数分数增加。分数达到一定程度,等级提升,速度加快。如图2.6所示。2.3.7暂停退出游戏的友好性在于能考虑用户的需要,随时可以暂停/继续游戏,在不愿继续游戏软件工程课程设计8时退出游戏。本程序可以在用户需要的时候响应Esc按键,提示是否退出游戏,如果不做选择即可暂停游戏,等待选择。界面如图2.7所示。图2.5图2.6软件工程课程设计9图2.72.4程序调试经过调试和修改,程序完全实现设计要求,成功模拟了俄罗斯

1 / 23
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功