Objective-C 实现2048算法类

2016-02-19 11:35 6 1 收藏

今天图老师小编给大家介绍下Objective-C 实现2048算法类,平时喜欢Objective-C 实现2048算法类的朋友赶紧收藏起来吧!记得点赞哦~

【 tulaoshi.com - 编程语言 】

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

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)
// .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; imodel.matrix; i++) {for (int j=0; jmodel.matrix; j++) {  if (data[i][j] == 0) {all = all + 1;  }}  }  if (all == 0) {return NO;  }  int index = arc4random() % all;  all = 0;  for (int i=0; imodel.matrix; i++) {for (int j=0; jmodel.matrix; j++) {  if (data[i][j] == 0) {all = all + 1;if (all == index+1) {  data[i][j] = 2;  return YES;}  }}  }  return NO;} #pragma mark - 滑动算法- (void)up_remove_blank:(DataModel *)model {  array data = [model getData];  int i,j,k;  for(j=0;j  model.matrix;j++){for(i=1;i  model.matrix;i++){  k=i;  while(k-1=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;jmodel.matrix;j++){  k=j;  while(k-1=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;imodel.matrix;i++){for(j=model.matrix-2;j=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;imodel.matrix;i++){for(j=0;jmodel.matrix-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 left_remove_blank:model];  }}  }}- (void)right:(DataModel *)model {  array data = [model getData];  int i,j;  for(i=0;imodel.matrix;i++){for(j=model.matrix-1;j=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;jmodel.matrix;j++){//每一列for(i=0;imodel.matrix-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 up_remove_blank:model];  }}  }}- (void)down:(DataModel *)model {  array data = [model getData];  int i,j;  for(j=0;jmodel.matrix;j++){//每一列for(i=model.matrix-1;i=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

来源:https://www.tulaoshi.com/n/20160219/1597931.html

延伸阅读
#undef debug #define debugdisplay #undef debugdictionary using System; using System.Collections; namespace LZW {  public class cLZW  {   #region Constrcut   public cLZW()   {   }   #endregion      #region Coding   public string ...
解析XML 本文以解析本地XML为例,网络获取到的返回值只需转换成NSData型,解析是同理 需要解析的xml文件如下,users.xml ?xml version="1.0" encoding="UTF-8"?AllUsers message用户信息/message user name芳仔小脚印/name age10/age schoolJiangSu University/school /user user name毒虫/name age22/age schoolNanJing Uni...
我想每个计算机专业的学生或多或少都接触过哈夫曼编码,数据结构中的老问题了。大体就是给出一些字符,和这些字符的出现频率,让你为这些字符设计一个二进制编码,要求频率最高的字符的编码最短。解决的方法是构造一棵哈夫曼树(二叉树),其基本思路是,每次从这些字符中挑出两个频率最低的,然后构造一个新的结点,使新结点的左右孩子指针分别...
小弟最近在编写一个O/RM组件(当然功能还是相当少的)。 大家都应该清楚把实体对象更新到数据库必须经过一系列的转换;特别是SQL语句的生成是比较费资源的,因为中间处里的东西实大是太多了。 在设计的过程中我就想如果一个对象插入数据库后把相应的Command保存在缓存中;下一次同一个类型的对象做这个操作时检测一下缓存如果有就直接拿来用这...
空字符串 在ios应用中,如果从网络请求数据,返回json或者是xml格式的数据时,经常会遇到空串,一般接口是用java等语言写的,如果是安卓,因为源语言都是java,只需判断是否等于null即可,但是在ios中会出现各种各项的形式,比如null,(null),null。 如果单纯用 代码如下: string!=nil; 无法判断出尖括号的空串 完整判断方法 代码如下: ...

经验教程

705

收藏

27
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部