13.3.2 初始化游戏状态数据(3)
程序中的粗体字代码控制了只设置i % 2 == 0的列,也就是只设置索引为偶数的列,该子类初始化的游戏界面如图13.8所示。
3.横向排列的方块
横向排列的方块以水平的空行分隔开,该子类的代码如下。
程序清单:codes/13/Link/Link/sources/board/FKHorizontalBoard.m
- @implementation FKHorizontalBoard
- - (NSArray*) createPieces:(NSArray*) pieces
- {
- // 创建一个NSMutableArray集合, 该集合中存放初始化游戏时所需的FKPiece对象
- NSMutableArray* notNullPieces = [[NSMutableArray alloc] init];
- for (int i = 0; i < pieces.count; i++)
- {
- for (int j = 0; j < [[pieces objectAtIndex:i] count]; j++)
- {
- // 加入判断,符合一定条件才构造FKPiece对象,并加到集合中
- // 如果j能被2整除,即单数行不会创建方块
- if (j % 2 == 0)
- {
- // 先构造一个FKPiece对象,只设置它在FKPiece二维数组中的索引值,
- // 所需要的FKPieceImage由其父类负责设置
- FKPiece* piece = [[FKPiece alloc] initWithIndexX:i indexY:j];
- // 添加到FKPiece集合中
- [notNullPieces addObject:piece];
- }
- }
- }
- return notNullPieces;
- }
- @end
程序中的粗体字代码控制了只设置j % 2 == 0的行,也就是只设置索引为偶数的行,该子类初始化的游戏界面如图13.9所示。