zoukankan      html  css  js  c++  java
  • ios2048小游戏

     最近突然想写一个2048的小游戏,由于全部是自定义控件,所以程序看起来冗杂,但是核心的算法部分还是很不错的,大家感兴趣的可以仔细看看。

    声明部分:

    #import <UIKit/UIKit.h>

    @interface ViewController : UIViewController

    @property(nonatomic,strong) IBOutlet UILabel *label;

    @property(nonatomic,strong) IBOutlet UILabel *label1;

    @property(nonatomic,strong) IBOutlet UILabel *label2;

    @property(nonatomic,strong) IBOutlet UILabel *label3;

    @property(nonatomic,strong) IBOutlet UILabel *label4;

    @property(nonatomic,strong) IBOutlet UILabel *label5;

    @property(nonatomic,strong) IBOutlet UILabel *label6;

    @property(nonatomic,strong) IBOutlet UILabel *label7;

    @property(nonatomic,strong) IBOutlet UILabel *label8;

    @property(nonatomic,strong) IBOutlet UILabel *label9;

    @property(nonatomic,strong) IBOutlet UILabel *label10;

    @property(nonatomic,strong) IBOutlet UILabel *label11;

    @property(nonatomic,strong) IBOutlet UILabel *label12;

    @property(nonatomic,strong) IBOutlet UILabel *label13;

    @property(nonatomic,strong) IBOutlet UILabel *label14;

    @property(nonatomic,strong) IBOutlet UILabel *label15;

    @end

     实现部分:

    #import "ViewController.h"

    @interface ViewController ()

    {

        NSArray *viewArray;

        NSNumber *ret,*ret1,*ret2,*ret3,*ret4,*ret5,*ret6,*ret7,*ret8,*ret9,*ret10,*ret11,*ret12,*ret13,*ret14,*ret15;

        NSArray *dataArray;

        NSMutableArray *mutArr,*conutArr;

        int x,y;

    }

    @end

    @implementation ViewController

    - (void)viewDidLoad {

        [super viewDidLoad];

        // Do any additional setup after loading the view, typically from a nib.

         //[mutArr removeAllObjects];

                [self appear];

        [self begin];

           ret = [NSNumber numberWithInt:[self.label.text intValue]];

          ret1 = [NSNumber numberWithInt:[self.label1.text intValue]];

          ret2 = [NSNumber numberWithInt:[self.label2.text intValue]];

          ret3 = [NSNumber numberWithInt:[self.label3.text intValue]];

          ret4 = [NSNumber numberWithInt:[self.label4.text intValue]];

        ret5 = [NSNumber numberWithInt:[self.label5.text intValue]];

        ret6 = [NSNumber numberWithInt:[self.label6.text intValue]];

        ret7 = [NSNumber numberWithInt:[self.label7.text intValue]];

        ret8 = [NSNumber numberWithInt:[self.label8.text intValue]];

        ret9 = [NSNumber numberWithInt:[self.label9.text intValue]];

        ret10 = [NSNumber numberWithInt:[self.label10.text intValue]];

        ret11 = [NSNumber numberWithInt:[self.label11.text intValue]];

        ret12 = [NSNumber numberWithInt:[self.label12.text intValue]];

        ret13 = [NSNumber numberWithInt:[self.label13.text intValue]];

        ret14 = [NSNumber numberWithInt:[self.label14.text intValue]];

         ret15 = [NSNumber numberWithInt:[self.label15.text intValue]];

        

       

        mutArr = [[NSMutableArray alloc]initWithObjects:ret,ret1,ret2,ret3,ret4,ret5,ret6,ret7,ret8,ret9,ret10,ret11,ret12,ret13,ret14,ret15, nil];

       

        UISwipeGestureRecognizer *swipeGesture = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipe:)];

        swipeGesture.direction = UISwipeGestureRecognizerDirectionRight;

        [self.view addGestureRecognizer:swipeGesture];

        UISwipeGestureRecognizer *swipeGesture1 = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipe1:)];

        swipeGesture1.direction = UISwipeGestureRecognizerDirectionLeft;

        [self.view addGestureRecognizer:swipeGesture1];

        UISwipeGestureRecognizer *swipeGesture2 = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipe2:)];

        swipeGesture2.direction = UISwipeGestureRecognizerDirectionUp;

        [self.view addGestureRecognizer:swipeGesture2];

        UISwipeGestureRecognizer *swipeGesture3 = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipe3:)];

        swipeGesture3.direction = UISwipeGestureRecognizerDirectionDown;

        [self.view addGestureRecognizer:swipeGesture3];

        

    }

    - (void)didReceiveMemoryWarning {

        [super didReceiveMemoryWarning];

        // Dispose of any resources that can be recreated.

    }

    -(void)swipe:(UISwipeGestureRecognizer *)swipe//向右

    {

                int temp;

            NSNumber *temp1 = nil;

        [self rightMoveSpace];

                    for (int i = 0; i<4; i++)

                    {

                for (int j = 3; j>=1; j--)

                {

                    if ([[mutArr objectAtIndex:j+4*i]intValue] == [[mutArr objectAtIndex:j-1+4*i]intValue])

                    {

                        [self rightMoveSpace];

                        temp = [[mutArr objectAtIndex:j+4*i]intValue]+[[mutArr objectAtIndex:j-1+4*i]intValue];

                        temp1 = [NSNumber numberWithInt:temp];

                        [mutArr replaceObjectAtIndex:j+4*i withObject:temp1];

                        [mutArr replaceObjectAtIndex:j-1+4*i withObject:[NSNumber numberWithInt:0]];

                        [self rightMoveSpace];

                        

                    }

                }

            }

          [self reAppear];

        

        

        

    }

    -(void)rightMoveSpace

    {

        

            NSNumber *temp = nil;

            NSNumber *temp1 = nil;

        

            for (int i = 0; i<4; i++) {

                for (int j = 2; j>=0; j--) {

                    int k = j;

                    while (k<=2&&[[mutArr objectAtIndex:k+1+4*i]intValue]==0)

                    {

                        temp = [mutArr objectAtIndex:k+1+4*i];

                        temp1 = [mutArr objectAtIndex:k+4*i];

                        [mutArr replaceObjectAtIndex:k+1+4*i withObject:temp1];

                        [mutArr replaceObjectAtIndex:k+4*i withObject:temp];

                        k++;

                    }

                }

            }

        

    }

    -(void)swipe1:(UISwipeGestureRecognizer *)swipe//向左

    {

                int temp;

            NSNumber *temp1 = nil;

        [self leftMoveSpace];

                   for (int i = 0; i<4; i++) {

                for (int j = 0; j<3; j++)

                {

                    if ([[mutArr objectAtIndex:j+4*i]intValue] == [[mutArr objectAtIndex:j+1+4*i]intValue])

                    {

                        temp = [[mutArr objectAtIndex:j+4*i]intValue]+[[mutArr objectAtIndex:j+1+4*i]intValue];

                        temp1 = [NSNumber numberWithInt:temp];

                        [mutArr replaceObjectAtIndex:j+4*i withObject:temp1];

                        [mutArr replaceObjectAtIndex:j+1+4*i withObject:[NSNumber numberWithInt:0]];

                        [self leftMoveSpace];

                        

                    }

                }

            }

        

         [self reAppear];

        

        

        

        

    }

    -(void)leftMoveSpace

    {

        

        

            NSNumber *temp = nil;

            NSNumber *temp1 = nil;

        

            for ( int i = 0; i<4; i++) {

                for (int j = 1; j<4; j++) {

                    int k = j;

                    while (k>=1&&[[mutArr objectAtIndex:k-1+4*i]intValue]==0)

                    {

                        temp = [mutArr objectAtIndex:k-1+4*i];

                        temp1 = [mutArr objectAtIndex:k+4*i];

                        [mutArr replaceObjectAtIndex:k-1+4*i withObject:temp1];

                        [mutArr replaceObjectAtIndex:k+4*i withObject:temp];

                        k--;

                    }

                }

            }

        

    }

    -(void)swipe2:(UISwipeGestureRecognizer *)swipes//向上

    {

        

            int temp;

            NSNumber *temp1 = nil;

        [self upMoveSpace];

        

            for ( int j = 0; j<4; j++) {

                for (int i = 0; i<3; i++)

                {

                    if ([[mutArr objectAtIndex:j+4*i]intValue] == [[mutArr objectAtIndex:j+4*(i+1)]intValue])

                    {

                        temp = [[mutArr objectAtIndex:j+4*i]intValue]+[[mutArr objectAtIndex:j+4*(i+1)]intValue];

                        temp1 = [NSNumber numberWithInt:temp];

                        [mutArr replaceObjectAtIndex:j+4*i withObject:temp1];

                        [mutArr replaceObjectAtIndex:j+4*(i+1) withObject:[NSNumber numberWithInt:0]];

                        [self upMoveSpace];

                        

                    }

                }

            

        }

     [self reAppear];

        

    }

    -(void)upMoveSpace

    {

        int index;

        for (index = 0; index<mutArr.count; index++)

        {

            NSNumber *temp = nil;

            NSNumber *temp1 = nil;

            int i = index/4;

            int j = index%4;

            for (j = 0; j<4; j++) {

                for (i = 1; i<4; i++) {

                    int k = i;

                    while (k>=1&&[[mutArr objectAtIndex:j+4*(k-1)]intValue]==0)

                    {

                        temp = [mutArr objectAtIndex:j+4*(k-1)];

                        temp1 = [mutArr objectAtIndex:j+4*k];

                        [mutArr replaceObjectAtIndex:j+4*(k-1) withObject:temp1];

                        [mutArr replaceObjectAtIndex:j+4*k withObject:temp];

                        k--;

                    }

                }

            }

        }

    }

    -(void)swipe3:(UISwipeGestureRecognizer *)swipe//向下

    {

        

                int temp;

            NSNumber *temp1 = nil;

        [self downMoveSpace];

                for (int j = 0; j<4; j++) {

                for (int  i = 3; i>=1; i--)

                {

                    if ([[mutArr objectAtIndex:j+4*i]intValue] == [[mutArr objectAtIndex:j+4*(i-1)]intValue])

                    {

                        temp = [[mutArr objectAtIndex:j+4*i]intValue]+[[mutArr objectAtIndex:j+4*(i-1)]intValue];

                        temp1 = [NSNumber numberWithInt:temp];

                        [mutArr replaceObjectAtIndex:j+4*i withObject:temp1];

                        [mutArr replaceObjectAtIndex:j+4*(i-1) withObject:[NSNumber numberWithInt:0]];

                        [self downMoveSpace];

                        

                    }

                }

            }

     [self reAppear];

        

    }

    -(void)downMoveSpace

    {

        NSNumber *temp = nil;

        NSNumber *temp1 = nil;

            for (int j = 0; j<4; j++)

            {

                for (int i = 2; i>=0; i--)

                {

                    int k = i;

                    while (k<=2&&[[mutArr objectAtIndex:j+4*(k+1)]intValue]==0)

                    {

                        temp = [mutArr objectAtIndex:j+4*(k+1)];

                        temp1 = [mutArr objectAtIndex:j+4*k];

                        [mutArr replaceObjectAtIndex:j+4*(k+1) withObject:temp1];

                        [mutArr replaceObjectAtIndex:j+4*k withObject:temp];

                        k++;

                    }

                }

            }

       

    }

    -(void)reAppear

    {

        int k=0;

        NSMutableDictionary *dictionary = [[NSMutableDictionary alloc]init];

        for (int i =0; i<mutArr.count; i++)

        {

            if ([[mutArr objectAtIndex:i]intValue] == 0)

            {

                  k++;

              

                [dictionary setObject:[NSNumber numberWithInt:i] forKey:[NSString stringWithFormat:@"%d",k-1]];

                [mutArr replaceObjectAtIndex:i withObject:@""];

                

            }

        }

        NSLog(@"%d",k-1);

        conutArr = [[NSMutableArray alloc]init];

        [conutArr addObject:[NSNumber numberWithInt:0]];

        [conutArr addObject:[NSNumber numberWithInt:k]];

        if ([[conutArr objectAtIndex:conutArr.count-1]intValue]!=[[conutArr objectAtIndex:conutArr.count-2]intValue])

        {

            int m = arc4random()%dictionary.count;

            NSNumber *temp = [dictionary objectForKey:[NSString stringWithFormat:@"%d",m]];

            [mutArr replaceObjectAtIndex:[temp intValue] withObject:[NSNumber numberWithInt:2]];

        }

        

       

        

        self.label.text = [NSString stringWithFormat:@"%@",[mutArr objectAtIndex:0]];

        self.label1.text = [NSString stringWithFormat:@"%@",[mutArr objectAtIndex:1]];

        self.label2.text = [NSString stringWithFormat:@"%@",[mutArr objectAtIndex:2]];

        self.label3.text = [NSString stringWithFormat:@"%@",[mutArr objectAtIndex:3]];

        

        self.label4.text = [NSString stringWithFormat:@"%@",[mutArr objectAtIndex:4]];

        self.label5.text = [NSString stringWithFormat:@"%@",[mutArr objectAtIndex:5]];

        self.label6.text = [NSString stringWithFormat:@"%@",[mutArr objectAtIndex:6]];

        self.label7.text = [NSString stringWithFormat:@"%@",[mutArr objectAtIndex:7]];

        

        self.label8.text = [NSString stringWithFormat:@"%@",[mutArr objectAtIndex:8]];

        self.label9.text = [NSString stringWithFormat:@"%@",[mutArr objectAtIndex:9]];

        self.label10.text = [NSString stringWithFormat:@"%@",[mutArr objectAtIndex:10]];

        self.label11.text = [NSString stringWithFormat:@"%@",[mutArr objectAtIndex:11]];

        

        self.label12.text = [NSString stringWithFormat:@"%@",[mutArr objectAtIndex:12]];

        self.label13.text = [NSString stringWithFormat:@"%@",[mutArr objectAtIndex:13]];

        self.label14.text = [NSString stringWithFormat:@"%@",[mutArr objectAtIndex:14]];

        self.label15.text = [NSString stringWithFormat:@"%@",[mutArr objectAtIndex:15]];

    }

    -(void)begin

    {

        viewArray = [self.view subviews];

       int  aaa = arc4random()%15;

       int  bbb = arc4random()%15;

        if (aaa != bbb)

        {

            UILabel *label = [viewArray objectAtIndex:aaa+2];

            label.text = @"2";

            label.textAlignment = UITextAlignmentCenter;

            label.tintColor = [UIColor redColor];

            UILabel *label1 = [viewArray objectAtIndex:bbb+2];

            label1.text = @"2";

          

            label1.textAlignment = UITextAlignmentCenter;

            label1.tintColor = [UIColor redColor];

            

        }else

        {

            UILabel *label = [viewArray objectAtIndex:aaa+2];

            label.text = @"2";

            label.textAlignment = UITextAlignmentCenter;

            label.tintColor = [UIColor redColor];

            UILabel *label1 = [viewArray objectAtIndex:bbb+3];

            label1.text = @"2";

            label1.textAlignment = UITextAlignmentCenter;

            label1.tintColor = [UIColor redColor];

        }

       

    }

    -(void)appear

    {

        self.label = [[UILabel alloc]init];

        self.label.frame = CGRectMake(60, 150, 60, 60);

        self.label.backgroundColor = [UIColor greenColor];

        self.label.textAlignment = UITextAlignmentCenter;

        [self.view addSubview:self.label];

        self.label1 = [[UILabel alloc]init];

        self.label1.frame = CGRectMake(60+60+10, 150, 60, 60);

        self.label1.backgroundColor = [UIColor greenColor];

        self.label1.textAlignment = UITextAlignmentCenter;

        [self.view addSubview:self.label1];

        self.label2 = [[UILabel alloc]init];

        self.label2.frame = CGRectMake(60+120+20, 150, 60, 60);

        self.label2.backgroundColor = [UIColor greenColor];

        self.label2.textAlignment = UITextAlignmentCenter;

        [self.view addSubview:self.label2];

        self.label3 = [[UILabel alloc]init];

        self.label3.frame = CGRectMake(60+180+30, 150, 60, 60);

        self.label3.backgroundColor = [UIColor greenColor];

        self.label3.textAlignment = UITextAlignmentCenter;

        [self.view addSubview:self.label3];

        

        self.label4 = [[UILabel alloc]init];

        self.label4.frame = CGRectMake(60, 150+70, 60, 60);

        self.label4.backgroundColor = [UIColor greenColor];

        self.label4.textAlignment = UITextAlignmentCenter;

        [self.view addSubview:self.label4];

        self.label5 = [[UILabel alloc]init];

        self.label5.frame = CGRectMake(60+70, 150+70, 60, 60);

        self.label5.backgroundColor = [UIColor greenColor];

        self.label5.textAlignment = UITextAlignmentCenter;

        [self.view addSubview:self.label5];

        self.label6 = [[UILabel alloc]init];

        self.label6.frame = CGRectMake(60+140, 150+70, 60, 60);

        self.label6.backgroundColor = [UIColor greenColor];

        self.label6.textAlignment = UITextAlignmentCenter;

        [self.view addSubview:self.label6];

        self.label7 = [[UILabel alloc]init];

        self.label7.frame = CGRectMake(60+210, 150+70, 60, 60);

        self.label7.backgroundColor = [UIColor greenColor];

        self.label7.textAlignment = UITextAlignmentCenter;

    [self.view addSubview:self.label7];

        

        self.label8 = [[UILabel alloc]init];

        self.label8.frame = CGRectMake(60, 150+140, 60, 60);

        self.label8.backgroundColor = [UIColor greenColor];

        self.label8.textAlignment = UITextAlignmentCenter;

        [self.view addSubview:self.label8];

        self.label9 = [[UILabel alloc]init];

        self.label9.frame = CGRectMake(60+70, 150+140, 60, 60);

        self.label9.backgroundColor = [UIColor greenColor];

        self.label9.textAlignment = UITextAlignmentCenter;

        [self.view addSubview:self.label9];

        self.label10 = [[UILabel alloc]init];

        self.label10.frame = CGRectMake(60+140, 150+140, 60, 60);

        self.label10.backgroundColor = [UIColor greenColor];

        self.label10.textAlignment = UITextAlignmentCenter;

        [self.view addSubview:self.label10];

        self.label11 = [[UILabel alloc]init];

        self.label11.frame = CGRectMake(60+210, 150+140, 60, 60);

        self.label11.backgroundColor = [UIColor greenColor];

        self.label11.textAlignment = UITextAlignmentCenter;

        [self.view addSubview:self.label11];

        

        self.label12 = [[UILabel alloc]init];

        self.label12.frame = CGRectMake(60, 150+210, 60, 60);

        self.label12.backgroundColor = [UIColor greenColor];

        self.label12.textAlignment = UITextAlignmentCenter;

        [self.view addSubview:self.label12];

        

        self.label13 = [[UILabel alloc]init];

        self.label13.frame = CGRectMake(60+70, 150+210, 60, 60);

        self.label13.backgroundColor = [UIColor greenColor];

        self.label13.textAlignment = UITextAlignmentCenter;

        [self.view addSubview:self.label13];

        

        self.label14 = [[UILabel alloc]init];

        self.label14.frame = CGRectMake(60+140, 150+210, 60, 60);

        self.label14.backgroundColor = [UIColor greenColor];

        self.label14.textAlignment = UITextAlignmentCenter;

        [self.view addSubview:self.label14];

        

        self.label15 = [[UILabel alloc]init];

        self.label15.frame = CGRectMake(60+210, 150+210, 60, 60);

        self.label15.backgroundColor = [UIColor greenColor];

        self.label15.textAlignment = UITextAlignmentCenter;

        [self.view addSubview:self.label15];

        

        

        

    }

    @end

  • 相关阅读:
    合并果子
    在线最小值问题
    沙盒机制(sandBox)
    简单地址簿?
    浅拷贝、深拷贝
    NSFileManager、NSFileHandle
    NSDate、NSCalendar、NSDateFormatter
    归档
    类目、延展、协议
    动态类型
  • 原文地址:https://www.cnblogs.com/lmg4819/p/4800211.html
Copyright © 2011-2022 走看看