iOS 2048中简单的数据模型实现类及二维数组的函数返回

将2048种二维数组封装成一个model,并封装

1.  .h 文件

typedef int (*array)[6];     // 二维数组返回类型

@interface DataModel : NSObject {
    int data[6][6];
}

@property (nonatomic, assign) int matrix;                   // 矩阵阶数

- (NSNumber *)objectAt:(int)x and:(int)y;          // 数据访问
- (NSString *)objectAtToString:(int)x and:(int)y;  // 将数据作为nsstring返回

- (void)initNumbers;        // 初始化为0
- (array)getData;           // 返回二维数组

- (void)output;   // 测试用 输出二维数组

@end

2.  .m文件

@implementation DataModel

- (id)init {
    self = [super init];
    if (self) {
        _matrix = 4;
    }
    return self;
}

- (NSNumber *)objectAt:(int)x and:(int)y {
    NSNumber *number = [NSNumber numberWithInt:data[x][y]];
    return number;
}

- (NSString *)objectAtToString:(int)x and:(int)y {
    NSNumber *number = [self objectAt:x and:y];
    NSNumberFormatter *format = [[NSNumberFormatter alloc] init];
    NSString *str = [format stringFromNumber:number];
    return str;
}

- (array)getData {
    return data;
}

- (void)initNumbers {
    for (int i = 0;  i < _matrix; i++) {
        for (int j = 0; j < _matrix; j++) {
            data[i][j] = 0;
        }
    }
    // 初始化开始游戏时两个数据的随机位置
    int t = 2;
    while (t > 0) {
        int x = arc4random() % _matrix;
        int y = arc4random() % _matrix;
        if (data[x][y] == 0) {
            data[x][y] = 2;
            t--;
        }
    }
}

- (void)output {
    for (int i = 0; i < _matrix; i++) {
        NSLog(@"%i %i %i %i",data[i][0],data[i][1],data[i][2],data[i][3]);
    }
}

@end


你可能感兴趣的:(2048model,二维数组返回值)