俄罗斯方块1.docVIP

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
用VC++实现俄罗斯方块游戏的程序设计 一.课程设计的目的和要求 1.1 课程设计的目的 VC++课程设计是C++课程的实践环节部分,主要在于巩固大家对面向对象程序设计概念的理解和MFC的运用,掌握VC++开发应用程序的基本方法,进一步提高同学们综合运用所学知识的能力。 1.2 课程设计的要求 要求用VC++设计和实现俄罗斯方块游戏。要求包括系统的需求分析;系统总框图和每个模块的设计分析;MFC应用程序架构;框架的拓展;设计的算法和实现;游戏内部实现;游戏区域绘图实现;系统存在的问题及处理;附上源代码。 二.设计正文 2.1 需求分析 2.1.1 游戏需求 随机给出不同的形状(长条形、Z字形、反Z字形、田字形、7字形、反7字形、T字形)下落填充给定的区域,若填满一条便消掉,计分,当达到一定分数时过关,设置六关,每关下落的速度不同。若在游戏中各形状填满给定游戏区域为输者。 2.1.2 游戏界面需求 良好的游戏界面,有分数显示和关数显示。让方块在一定区域内变形和运动,该区域用一种颜色表明,既用一种颜色做为背景,本设计为黑色。同时需要另一种颜色将黑色围起来,实现美感。 2.1.3 游戏形状需求 良好的方块形状设计,绘制常见的7种图形(长条形、Z字形、反Z字形、田字形、7字形、反7字形、T字形),个方块要能实现它的变形,可设置为顺时针或者逆时针变形,本设计为逆时针。 2.2 算法分析 2.2.1 程序流程图如下图2.2.1所示: 图2.2.1程序流程图 2.2.2定义方块的数据结构 对于方块在某一瞬间的位置标识,我们采用4*2的数组标识出来,即用四个存储单位空间存储当前下坠物的每一个方块的位置,也就是说用4个存储单位空间存储当前下坠物的每一子块的位置对整个下坠物的位置进行标识,而每一个存储空间的大小就是一个点的坐标(x,y),每一个方块按照从左到右的方式进行编号,并且在编号过程中对于同一列的方块实行从上到下进行编号。 ActiveStatus[0][0]和ActiveStatus[0][1]则是第0号方块的横坐标X和纵坐标Y, ActiveStatus[2][0]和ActiveStatus[2][1]则是第2号方块懂得横左边x和纵坐标y。 2.2.3 游戏设计分析 从前面的功能描述可知,先虚拟出俄罗斯方块游戏的类对象,并抽象出核心的数据属性和操作方法等,然后再做细化,最后将整个虚拟类外壳脱掉,再移植到视图类中去,实现方法如下: CRectGameView : public CView { //内部存取数据结构 int m_stateMap[MAX_ROW][MAX_COL]; //初始化操作 GameInitnal(); //游戏的初始化 //用于判断数据相关状态的操作 IsLeftLimit(); //下坠物件是否可向左移动 IsRightLitmit(); IsBottom(); //是否已经到达了底部 IsGameEnd(); //是否游戏已经结束 //方块物件下坠过程中的操作 RectChange(); //下坠物件变形 RectDown(); //下坠物件正常下落 RectArrow(); //下坠物件方向移动(左,右,下加速) //状态控制操作 GameStart(); //游戏开始 GamePause(); //游戏暂停 GameEnd(); //游戏结束 } 通过上面的代码可以看出,在虚拟类中抽象出了核心的内部数据和一些基本操作函数。对于操作函数,可以把它们分为内部实现和基本核心操作(如判断操作)以及明显提供给外部使用的整体模块外部操作(如状态控制操作)。而内部基本操作又可分为判断操作和执行操作。 三.系统设计 3.1 创建界面的主框架 首先创建一个项目工程,命名为skyblue_Rect,并在AppWizard的构架过程中选择单文档方式,其它保持默认方式。其项目的架构类视图如下图3.1所示。 图3.1 项目的构架类似图 在构架类视图中是MFC的基本架构组合:App(应用程序)类、Document(文档)类、View(视图)类、Frame(框架)类和用于提示作者的对话框CAboutDlg类,至于COptionDlg类是用作俄罗斯方块参数选择的对话框类对象。 3.2 正常流程的设计 3.2.1 定时制机制 从分析游戏的特性可以知道,定时器的产生应该在游戏开始得到时候,而游戏暂停或者结束时,定时器失效,所以分别在游戏的

文档评论(0)

yan666888 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档