初始化游戏状态数据(1)
来源:互联网 发布:如何建立网络销售平台 编辑:程序博客网 时间:2024/05/21 12:44
13.3.2 初始化游戏状态数据(1)
为了初始化游戏状态,程序需要创建一个NSArray数组,为此,程序定义一个FKBaseBoard基类,该基类的代码如下。
程序清单:codes/13/Link/Link/sources/board/FKBaseBoard.h
- @interface FKBaseBoard : NSObject
- - (NSArray*) createPieces:(NSArray*)pieces;
- - (NSArray*) create;
- @end
程序清单:codes/13/Link/Link/sources/board/FKBaseBoard.m
- @implementation FKBaseBoard
- // 定义一个方法, 让子类去实现
- - (NSArray*) createPieces:(NSArray*)pieces
- {
- return nil;
- }
- - (NSArray*) create
- {
- // 创建FKPiece的二维数组
- NSMutableArray* pieces = [[NSMutableArray alloc] init];
- for(int i = 0 ; i < xSize ; i++)
- {
- NSMutableArray* arr = [[NSMutableArray alloc] init];
- for (int j = 0 ; j < ySize ; j++)
- {
- [arr addObject:[NSObject new]];
- }
- [pieces addObject:arr];
- }
- // 返回非空的FKPiece集合,该集合由子类实现的方法负责创建
- NSArray* notNullPieces = [self createPieces:pieces]; //①
- // 根据非空FKPiece对象的集合的大小来取图片
- NSArray* playImages = getPlayImages(notNullPieces.count);
- // 所有图片的宽、高都是相同的,随便取出一个方块的宽、高即可
- int imageWidth = [[playImages objectAtIndex:0] image].size.width;
- int imageHeight = [[playImages objectAtIndex:0] image].size.height;
- for (int i = 0; i < notNullPieces.count; i++) // 遍历非空的FKPiece集合
- {
- // 依次获取每个FKPiece对象
- FKPiece* piece = [notNullPieces objectAtIndex:i];
- piece.image = [playImages objectAtIndex:i];
- // 计算每个方块左上角的X、Y坐标
- piecepiece.beginX = piece.indexX * imageWidth + beginImageX;
- piecepiece.beginY = piece.indexY * imageHeight + beginImageY;
- // 将该方块对象放入方块数组的相应位置处
- [[pieces objectAtIndex:piece.indexX]
- setObject:piece atIndex:piece.indexY];
- }
- return pieces;
- }
- @end
上面的粗体字代码块用于初始化NSArray代表的二维数组,为有方块的FKPiece元素的beginX、beginY、image属性赋值,beginX、beginY根据该方块在二维数组中的位置动态计算得到。
上面程序中用到了xSize、ySize等常量,这两个常量用于代表该游戏在横向和纵向上各包含多少个方块。程序专门定义了一个Constants.h文件来记录这些常量的值,后面有些类也用到了该头文件中的常量,请读者参考本书配套光盘中的Constants.h文件。
程序中的①号代码调用了createPieces:方法来创建一个NSArray集合,该方法将会交给其子类去实现,这里是典型的"模板模式"的应用。FKBaseBoard基类完全可以根据FKPiece对象在二维数组中的位置动态地计算它的beginX、beginY,但FKBaseBoard不确定NSArray代表二维数组的哪些元素是有方块的。
0 0
- 初始化游戏状态数据(1)
- 初始化游戏状态数据
- 初始化游戏状态数据(2)
- 初始化游戏状态数据(3)
- 初始化游戏状态数据二
- 数独游戏(1)之绘制九宫格,并初始化数据
- 数独游戏--初始化表中数据
- 身体状态统计(游戏)
- 17.2.1 数据初始化
- 游戏状态
- Lua游戏脚本开发1 -- 初始化Lua
- (NO.00005)iOS实现炸弹人游戏(四):游戏数据的初始化(一)
- (NO.00005)iOS实现炸弹人游戏(五):游戏数据的初始化(二)
- (NO.00005)iOS实现炸弹人游戏(六):游戏数据的初始化(三)
- Oracle练习1--初始化数据
- Java 数据初始化(一)
- Java 数据初始化(二)
- NYOJ 832 合并游戏(状态压缩)
- seajs入门2
- C#第四次作业:MYSQL数据库及C#操作MYSQL数据库——Winform程序
- 【iOS解决方案】获取NSString某一个字符串多次出现的位置
- fastdfs函数tracker_query_storage_update1分析
- Java基础(极客)——09、Java面向对象中类与对象的概念和使用
- 初始化游戏状态数据(1)
- easyUI中select下拉框添加option选项
- Android 使用AES/CBC/PKCS7Padding 加解密字符串
- 第十二周 阅读程序(2)
- 初始化游戏状态数据(2)
- 利用WMI代替psexec——WMIEXEC.vbs [安全脉搏更新]
- HTML容器内文字自动折行
- oracle如何把得到的值作为参数传入到 sql中
- 张孝祥正在整理Java就业面试题大全