//
// 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