- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
“连连看”考验的是各位的眼力,在有限的时间内,只要把所有能连接的相同图案,两个一对地找出来,每找出一对,它们就会自动消失,只要把所有的图案全部消完即可获得胜利。所谓能够连接,指得是:无论横向或者纵向,从一个图案到另一个图案之间的连线不能超过两个弯(中间的直线不超过三根),其中,连线不能从尚未消去的图案上经过。 本章开发连连看游戏,游戏效果如图8-1所示。游戏具有统计消去方块的个数功能,这里由于是10行10列所以方块总数为100个。玩家时间是200秒,如果玩家无法通关,玩家可以重新开始新的一局游戏。 第8章 连连看游戏 游戏界面和相关图片素材 8.2 程序设计的思路 8.2.1 连连看游戏数据模型 对于游戏玩家而言,游戏界面上看到“元素”千差万别、变化多端;但对于游戏开发者而言,游戏界面上的元素在底层都是一些数据,不同数据所绘制的图片有差异而已。因此建立游戏的状态数据模型是实现游戏逻辑的重要步骤。 连连看的游戏界面是一个N×M的“网格”地图,每个网格上显示一张图片。但对于游戏开发者来说,这个网格只需要用一个二维数组来定义即可,而每个网格上所显示的图片,对于底层的数据模型来说,不同的图片对应于不同的数值即可。图8-2显示了数据模型的示意。 8.2 程序设计的思路 对于图8-2所示的数据模型,只要让数值为-1(BLANK_STATE)的网格上不绘制动物图片,其他数值是动物方块的图像的 ID。非-1(BLANK_STATE)的网格则绘制相应的动物图片,就可显示出连连看的游戏界面。本程序实际上并不是直接使用int二维数组来保存游戏的状态数据,而是采用一维数组m_map。对地图中的行列数的表达,用一个转换法则即可。 例如:点(x1,y2)对应的数组元素m_map(y2 * m_nCol + x1)。其中m_nCol 是总列数。当然数组元素下标也可换算出在“网格”地图中坐标点。 8.2 程序设计的思路 8.2. 2 动物方块布局 连连看游戏数据模型设计好了。在游戏开始前,怎么对它进行初始化呢?下面一起来进行分析。由于方块需要成对地出现,因此在做地图初始化的时候,不应该仅仅对动物方块的图像ID做简单的随机取数,然后将该随机选出来的物件放到地图区域中去就了事,而是需要成对地对对动物方块的图像进行选取,就是说地图区域中的小方块必须是偶数个才行。但是,怎样使方块图案成对出现呢?这里就需要引入一个临时地图tmpMap,该临时地图的大小和实际地图m_map的大小一致。并且先添置好4组完全一样的图像类型ID数据(0~ m_nCol * m_nRow /4)。也就是说每种图像方块有4个。 首先,我们可以先按顺序把每种动物方块(实际上就是标号ID)排好放入ArrayList列表tmpMap(临时的地图)中,然后再随机从tmpMap(临时的地图)中取一个动物方块放入地图m_map中。实际上程序内部是不需要认识动物方块的图像的,只需要用一个ID来表示,运行界面上画出来的动物图形是根据地图中ID取资源里的图片画的。如果ID的值为-1(BLANK_STATE),则说明此处已经被消除掉了。 8.2.3 连通算法 那么分析一下连接的情况可以看到,一般分三种情况,如图8-3所示: 8.2.3 连通算法 (1)直连方式 在直连方式中,要求两个选中的方块x或y相同,即在一条直线上。并且之间没有其他任何图案的方块。在3中连接方式中最简单。 (2)一个折点 其实相当于两个方块划出一个矩形,这两个方块是一对对角顶点,另外两个顶点中某个顶点(即折点)如果可以同时和这两个方块直连,那就说明可以“一折连通”。 (3)两个折点 这种方式的两个折点(z1,z2)必定在两个目标点(两个选中的方块)p1,p2所在的x方向或y方向的直线上。 按p1(x1,y1)点向四个方向探测,例如向右探测,每次x1+1,判断z1(x1+1,y1)与p2(x2,y2)点可否形成一个折点连通性,如果可以形成连通,则两个折点连通,否则直到超过图形右边界区域。假如超过图形右边界区域,则还需判断两个折点在选中方块的右侧,且两个折点在图案区域之外连通情况是否存在。此时判断可以简化为判断p2点(x2,y2)是否可以水平直通到边界。 经过上面的分析,对两个方块是否可以抵消算法流程图如图8-4所示。根据图8-4所示的流程图,对选中的两个方块(分别在(x1,y1)、(x2,y2)位置)是否可以抵消的判断如下实现。把该功能封装在IsLink()方法里面 . 一个折点连通使用OneCornerLink(()实现判断。其实相当于两个方块划出一个矩形,这两个方块是一对对角顶点,见图8-5两个黑色目标方块的连通情况,右上角打叉的位置就是折点。左下角打叉的位置不能与左上角黑色目标方块连通,所以不能作为折点。
您可能关注的文档
- JAVA程序设计教程第5章 数组与字符串.ppt
- JAVA程序设计教程第6章 Java Applet.ppt
- JAVA程序设计教程第7章 图形用户界面编程.ppt
- JAVA程序设计教程第8章 Java输入输出与数据库操作.ppt
- JAVA程序设计教程第9章 多线程——Java中.ppt
- JAVA程序设计教程第10章 网络程序设计.ppt
- JAVA程序设计教程第11章 异常处理.ppt
- Java程序设计实用教程(第2版)_第1章_初识Java.ppt
- Java程序设计实用教程(第2版)第2章_初识对象和简单数据类型.ppt
- Java程序设计实用教程(第2版)第3章_运算符、表达式和语句.ppt
- 科普版三年级下册英语Unit 7《My house》全单元教学课件(新教材).pptx
- 科普版(新教材)三年级下册英语Unit 9《Jobs》第3课时教学课件.pptx
- 科普版(新教材)三年级下册英语Unit 12《 Revision》第1课时教学课件.pptx
- 科普版(新教材)三年级下册英语Unit 10《Work places》第2课时教学课件.pptx
- 科普版(新教材)三年级下册英语Unit 10《Work places》第1课时教学课件.pptx
- 科普版三年级下册英语Unit 9《Jobs》全单元教学课件(新教材).pptx
- 科普版(新教材)三年级下册英语Unit 12《 Revision》第2课时教学课件.pptx
- 科普版三年级下册英语Unit 12《Revision》全单元教学课件(新教材).pptx
- 科普版(新教材)三年级下册英语Unit 8《Vegetables》第3课时教学课件.pptx
- 科普版(新教材)三年级下册英语Unit 9《Jobs》第1课时教学课件.pptx
文档评论(0)