//
// ViewController.m // 2048 // // Created by 晚起的蚂蚁 on 2016/11/3. // Copyright © 2016年 晚起的蚂蚁. All rights reserved. // #import "ViewController.h" @interface ViewController () @property(retain)NSString* str1; @property(retain)NSString* str2; @property bool isMove; @property bool isAdd; @property NSInteger addNumber; @end @implementation ViewController - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } - (void)viewDidLoad { [super viewDidLoad]; _addNumber = 0; _str1 = [NSString new]; _str2 = [NSString new]; [self Map]; //手滑 UISwipeGestureRecognizer *recognizer; recognizer = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(handleSwipeFrom:)]; [recognizer setDirection:(UISwipeGestureRecognizerDirectionRight)]; [[self view] addGestureRecognizer:recognizer]; recognizer = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(handleSwipeFrom:)]; [recognizer setDirection:(UISwipeGestureRecognizerDirectionLeft)]; [[self view] addGestureRecognizer:recognizer]; recognizer = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(handleSwipeFrom:)]; [recognizer setDirection:(UISwipeGestureRecognizerDirectionUp)]; [[self view] addGestureRecognizer:recognizer]; recognizer = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(handleSwipeFrom:)]; [recognizer setDirection:(UISwipeGestureRecognizerDirectionDown)]; [[self view] addGestureRecognizer:recognizer]; // Do any additional setup after loading the view, typically from a nib. } -(void)handleSwipeFrom:(UISwipeGestureRecognizer *)recognizer{ if(recognizer.direction==UISwipeGestureRecognizerDirectionDown) [self handleSForDown]; if(recognizer.direction==UISwipeGestureRecognizerDirectionUp) [self handleSForUp]; if(recognizer.direction==UISwipeGestureRecognizerDirectionLeft) [self handleSForLeft]; if(recognizer.direction==UISwipeGestureRecognizerDirectionRight) [self handleSForRight]; //判断是否移动过 if (_isMove) { [self suijiKongbai]; _isMove=false; } _addNumber = 0; } //右移 -(void)handleSForRight{ for (NSInteger k= 0; k<3; k++) for (NSInteger j=2; j>=0; j--) for (NSInteger i=0; i<4; i++) { NSInteger a =j*4+i+1;//前 NSInteger b =(j+1)*4+i+1;//后 [self move:a and:b]; } } //左移 -(void)handleSForLeft{ for (NSInteger k= 0; k<3; k++) for (NSInteger j=1; j<4; j++) for (NSInteger i=0; i<4; i++) { NSInteger a =j*4+i+1;//前 NSInteger b =(j-1)*4+i+1;//后 [self move:a and:b]; } } //下移 -(void)handleSForDown{ for (NSInteger k= 0; k<3; k++) for (NSInteger i=2; i>=0; i--) for (NSInteger j=3; j>=0; j--) { NSInteger a =j*4+i+1;//前 NSInteger b =j*4+i+2;//后 [self move:a and:b]; } } //上移 -(void)handleSForUp{ for (NSInteger k= 0; k<3; k++) for (NSInteger i=1; i<4; i++) for (NSInteger j=0; j<4; j++) { NSInteger a =j*4+i+1;//前 NSInteger b =j*4+i;//后 [self move:a and:b]; } } //移动 -(void)move:(NSInteger)a and:(NSInteger)b{ _str1=((UILabel*)[self.view viewWithTag:a]).text;//前 _str2=((UILabel*)[self.view viewWithTag:b]).text;//后 if (_str1.length!=0) { int number = [_str1 intValue]; if (_str2.length==0) { UILabel* label =(UILabel*)[self.view viewWithTag:b]; label.text=_str1; [self ColorSet:label and:number]; UILabel* label1 =(UILabel*)[self.view viewWithTag:a]; label1.backgroundColor = [UIColor whiteColor]; label1.text=@""; _isMove=true; } if (_addNumber<2) { if ([_str1 isEqualToString:_str2]) { UILabel* label =(UILabel*)[self.view viewWithTag:b]; label.text=[NSString stringWithFormat:@"%d",2*number]; [self ColorSet:label and:2*number]; UILabel* label1 =(UILabel*)[self.view viewWithTag:a]; label1.backgroundColor = [UIColor whiteColor]; label1.text=@""; UILabel* labelFendshu =(UILabel*)[self.view viewWithTag:17]; NSInteger k = [labelFendshu.text intValue]; labelFendshu.text = [NSString stringWithFormat:@"%ld",k+=2*number]; _isMove=true; _addNumber++; } } } } //移动后再随机生成一个新的数 -(void)suijiKongbai{ UILabel* label; NSInteger number; while (1) { number = arc4random()%16+1; label=(UILabel*)[self.view viewWithTag:number]; if (label.text.length==0) { [self suijishu:number]; break; } } } //开始时列出地图 -(void)Map{ CGFloat width=[UIScreen mainScreen].bounds.size.width; CGFloat height=[UIScreen mainScreen].bounds.size.height; UIView* backgroundColor=[[UIView alloc]initWithFrame:CGRectMake(2,140, width-4, width+10)]; backgroundColor.backgroundColor=[UIColor brownColor]; backgroundColor.layer.masksToBounds=YES;//设置圆角显示 backgroundColor.layer.cornerRadius=10;//设置圆角的角度大小 [self.view addSubview:backgroundColor]; [self.view sendSubviewToBack:backgroundColor];//把backgroundColor放到最下面 UIView* myView=[[UIView alloc]initWithFrame:CGRectMake(0, 0, width, 20)]; myView.backgroundColor=[UIColor whiteColor]; [self.view addSubview:myView]; self.view.backgroundColor = [UIColor orangeColor]; UILabel* labelName=[[UILabel alloc]initWithFrame:CGRectMake(8,50,width-16,80)]; labelName.backgroundColor=[UIColor whiteColor]; labelName.text=@"2048"; labelName.textAlignment = UITextAlignmentCenter;//剧中 labelName.font = [UIFont systemFontOfSize:60];//字体大小 [self.view addSubview:labelName]; //生成2048方格 int tag = 0; for(NSInteger i=0;i<4;i++){ for(NSInteger j=0;j<4;j++){ UILabel* label=[[UILabel alloc]initWithFrame:CGRectMake(i*(width/4-2)+6,j*(width/4-2)+150,width/4-7,width/4-7)]; label.backgroundColor=[UIColor whiteColor]; label.tag = ++tag; label.textAlignment = UITextAlignmentCenter;//剧中 label.font = [UIFont systemFontOfSize:30];//字体大小 label.layer.masksToBounds=YES;//设置圆角显示 label.layer.cornerRadius=5;//设置圆角的角度大小 [self.view addSubview:label]; } } //开始就产生三个随机数 for (NSInteger i=0; i<3; i++) { [self suijiKongbai]; } UILabel* label=[[UILabel alloc]initWithFrame:CGRectMake(8,height-90,width-16,80)]; label.backgroundColor=[UIColor whiteColor]; label.textAlignment = UITextAlignmentCenter;//剧中 label.font = [UIFont systemFontOfSize:40];//字体大小 label.tag=17; [self.view addSubview:label]; } //随机数产生,并赋值 -(void)suijishu:(NSInteger)number{ //给随机数分配数字与颜色 int fu = arc4random()%100; if (fu>90) { UILabel* label=(UILabel*)[self.view viewWithTag:number]; [self ColorSet:label and:4]; label.text = @"4"; }else{ UILabel* label=(UILabel*)[self.view viewWithTag:number]; [self ColorSet:label and:2]; label.text = @"2"; } } //设置颜色 -(void)ColorSet:(UILabel*)label and:(NSInteger)number{ switch (number) { case 2: label.backgroundColor = [UIColor orangeColor]; break; case 4: label.backgroundColor = [UIColor magentaColor]; break; case 8: label.backgroundColor = [UIColor yellowColor]; break; case 16: label.backgroundColor = [UIColor purpleColor]; break; case 32: label.backgroundColor = [UIColor grayColor]; break; case 64: label.backgroundColor = [UIColor greenColor]; break; case 128: label.backgroundColor = [UIColor lightGrayColor]; break; case 256: label.backgroundColor = [UIColor orangeColor]; break; case 512: label.backgroundColor = [UIColor blueColor]; break; case 1024: label.backgroundColor = [UIColor redColor]; break; case 2048: label.backgroundColor = [UIColor redColor]; break; default: break; } } @end