栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 移动开发 > iOS

Objective-C 实现2048算法类

iOS 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Objective-C 实现2048算法类

参数model有一个二维数组data,及阶数matrix

// .h文件
@class DataModel;
 
@interface Algorithm : NSObject
 
@property (nonatomic,assign) int addScore;     // 加分
 
- (void)caculateTop:(DataModel *)model;      // 上滑规则
- (void)caculateBottom:(DataModel *)model;     // 下滑规则
- (void)caculateLeft:(DataModel *)model;      // 左滑规则
- (void)caculateRight:(DataModel *)model;     // 右滑规则
 
- (BOOL)randNewOne:(DataModel *)data;
 
- (int)getAddScore;
 
@end
 
 
// .m文件
@implementation Algorithm
 
#pragma mark - 滑动规则
- (void)caculateTop:(DataModel *)model {
  [self up_remove_blank:model];
  [self up:model];
}
 
- (void)caculateBottom:(DataModel *)model {
  [self down_remove_blank:model];
  [self down:model];
}
 
- (void)caculateLeft:(DataModel *)model {
  [self left_remove_blank:model];
  [self left:model];
}
 
- (void)caculateRight:(DataModel *)model {
  [self right_remove_blank:model];
  [self right:model];
}
 
- (int)getAddScore {
  int temp = _addScore;
  _addScore = 0;
  return temp;
}
 
#pragma mark - 新一个
- (BOOL)randNewOne:(DataModel *)model {
  array data = [model getData];
  int all = 0;
  for (int i=0; i=0&&data[k-1][j]==0){//上面的那个为空
 //swap(data[k][j],data[k-1][j]);
 int temp = data[k][j];
 data[k][j] = data[k-1][j];
 data[k-1][j] = temp;
 k--;
      }
    }
  }
}
 
- (void)down_remove_blank:(DataModel *)model {
  array data = [model getData];
  int i,j,k;
  for(j=0; j < model.matrix; j++){
    for(i = model.matrix-2; i >= 0; i--){
      k=i;
      while(k+1<=model.matrix-1&&data[k+1][j]==0){//上面的那个为空
 //swap(a[k][j],a[k][j]);
 int temp = data[k][j];
 data[k][j] = data[k+1][j];
 data[k+1][j] = temp;
 k++;
      }
    }
  }
}
 
- (void)left_remove_blank:(DataModel *)model {
  array data = [model getData];
  int i,j,k;
  for(i=0;i < model.matrix;i++){
    for(j=1;j=0&&data[i][k-1]==0){//上面的那个为空
 //swap(a[i][k],a[i][k-1]);
 int temp = data[i][k];
 data[i][k] = data[i][k-1];
 data[i][k-1] = temp;
 k--;
      }
    }
  }
}
- (void)right_remove_blank:(DataModel *)model {
  array data = [model getData];
  int i,j,k;
  for(i=0;i=0;j--){
      k=j;
      while(k+1<=model.matrix-1&&data[i][k+1]==0){//上面的那个为空
 //swap(a[i][k],a[i][k+1]);
 int temp = data[i][k];
 data[i][k] = data[i][k+1];
 data[i][k+1] = temp;
 k++;
      }
    }
  }
}
- (void)left:(DataModel *)model {
  array data = [model getData];
  int i,j;
  for(i=0;i=1;j--){
      if(data[i][j]==data[i][j-1]){
 _addScore = _addScore + data[i][j];
 data[i][j]+=data[i][j-1];
 data[i][j-1]=0;
 [self right_remove_blank:model];
      }
    }
  }
}
- (void)up:(DataModel *)model {
  array data = [model getData];
  int i,j;
  for(j=0;j=1;i--){
      if(data[i][j]==data[i-1][j]){
 _addScore = _addScore + data[i][j];
 data[i][j]=data[i][j]+data[i-1][j];
 data[i-1][j]=0;
 //移除空格
 [self down_remove_blank:model];
      }
    }
  }
}
 
@end

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/167573.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号