【移动应用开发技术】疯狂ios讲义疯狂连载之游戏的状态数据模型_第1页
【移动应用开发技术】疯狂ios讲义疯狂连载之游戏的状态数据模型_第2页
【移动应用开发技术】疯狂ios讲义疯狂连载之游戏的状态数据模型_第3页
【移动应用开发技术】疯狂ios讲义疯狂连载之游戏的状态数据模型_第4页
【移动应用开发技术】疯狂ios讲义疯狂连载之游戏的状态数据模型_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【移动应用开发技术】疯狂ios讲义疯狂连载之游戏的状态数据模型

对游戏玩家而言在游戏界面上看到的“元素”千差万别、变化多端但对游戏开发者而言游戏界面上的元素在底层都是一些数据不同的数据所绘制的图片有所不同。因此建立游戏的状态数据模型是实现游戏逻辑的重要步骤。13.3.1定义数据模型《疯狂连连看》的游戏界面是一个n×m的“网格”每个网格上显示一张图片对游戏开发者来说这个网格只需要用一个二维数据来定义而每个网格上所显示的图片对底层的数据模型来说不同的图片对应于不同的数值即可。图13.6显示了数据模型的示意。图13.6《疯狂连连看》的数据模型对于图13.6所示的数据模型只要让数值为0的网格上不绘制图片其他数值的网格则绘制相应的图片就可显示出《疯狂连连看》的游戏界面。本程序实际上并不是直接使用int[][]数组来保存游戏的状态数据而是采用NSArray来保存游戏的状态模型而NSArray的元素又是NSArray相当于创建二维数组数组元素是FKPiece。因为FKPiece对象封装的信息更多不仅包含了该方块左上角的X、Y坐标还包含了该FKPiece所显示的图片、图片ID这个图片ID可作为该FKPiece的数据。13.3.2初始化游戏状态数据为了初始化游戏状态程序需要创建一个NSArray数组为此程序定义一个FKBaseBoard基类该基类的代码如下。程序清单codes/13/Link/Link/sources/board/FKBaseBoard.h程序清单codes/13/Link/Link/sources/board/FKBaseBoard.m上面的粗体字代码块用于初始化NSArray代表的二维数组为有方块的FKPiece元素的beginX、beginY、p_w_picpath属性赋值beginX、beginY根据该方块在二维数组中的位置动态计算得到。提示程序中的①号代码调用了createPieces:方法来创建一个NSArray集合该方法将会交给其子类去实现这里是典型的“模板模式”的应用。FKBaseBoard基类完全可以根据FKPiece对象在二维数组中的位置动态地计算它的beginX、beginY但FKBaseBoard不确定NSArray代表二维数组的哪些元素是有方块的。由于《疯狂连连看》游戏的初始状态可能有很多种比如横向分布的方块、竖向分布的方块、矩阵排列的方块、随机分布的方块等该程序为了考虑以后的扩展性此处只采用了模板模式FKBaseBoard基类负责完成通用的代码对于暂时无法确定的需要子类实现的部分可定义成createPieces:方法。由于Objective-C没有提供抽象类和抽象方法的概念因此此处将createPieces:方法定义成返回nil的空方法。上面的程序中还用到了一个ImageUtil工具类它的作用是自动搜寻项目包的图片并根据需要随机读取该目录下的图片。后面会详细介绍该工具类的用法。下面为该FKBaseBoard实现三个子类。矩阵排列的方块会填满二维数组的每个数组元素只是把四周留空即可该子类的代码实现如下接口部分几乎没有代码因此此处不再给出。程序清单/Users/yeeku/publish/codes/13/Link/Link/sources/board/FKFullBoard.m该子类初始化的游戏界面如图13.7所示。图13.7矩阵排列的方块竖向排列的方块以垂直的空列分隔开该子类的代码实现如下接口部分几乎没有代码因此此处不再给出。程序清单codes/13/Link/Link/sources/board/FKVerticalBoard.m程序中的粗体字代码控制了只设置i%2==0的列也就是只设置索引为偶数的列该子类初始化的游戏界面如图13.8所示。图13.8竖向排列的方块横向排列的方块以水平的空行分隔开该子类的代码如下。程序清单codes/13/Link/Link/sources/board/FKHorizontalBoard.m程序中的粗体字

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论