大概思路(初步制作,粗工制造):demo

1、Collection 创建cell

2、cell上添加一个view,用来添加手势

3、字典用来存放数据-》每次执行StarGame数组接收没有数字的字典,原来字典对应的删除-》随机选中改变数组-》插回原来数据-》每次滑动 用选择排序分别相加相邻且相等的数据后,再用选择排序 进行排序(详情下文)-》刷新cell-》♻️

iOS 类似2048、4096小游戏-OC iOS 类似2048、4096小游戏-OCiOS 类似2048、4096小游戏-OCiOS 类似2048、4096小游戏-OCiOS 类似2048、4096小游戏-OC

//数据    
NSMutableDictionary * dictChange;//放 数值为0(代表没有数值的位置) 的字典
 UISwipeGestureRecognizer * recognizer;//滑动手势
   NSMutableDictionary * dictData;//数据字典

 

// 先添加 初始数据
-(void)creaDATA{
    
    
    dictData = [NSMutableDictionary dictionary];
    for (int i=0; i<16; i++) {
        
        [dictData setObject:@"0" forKey:@(i)];
        
    }
    
}

 

-(void)StarGame{
    //筛选出 模块上可以添加数据的 位置字典。装到数组,随机分配
    dictChange = [NSMutableDictionary dictionary];
    for (int i=0; i<16; i++) {
        NSString * str = [dictData objectForKey:@(i)];
        if ([str isEqualToString:@"0"]) {
            
            [dictChange setObject:@"0" forKey:@(i)];
            
        }
       
    }
    
    //先判断有没有满足要求
    NSArray * value = [dictData allValues];
    if ([value containsObject:_GameNum]) {
        NSInteger haomiao,miao,fen;
        
        haomiao = timernumber%100;
        miao = timernumber/100;
        fen = miao/60;
        
        
        [UIView pushAlertTwoActionViewWithMessage:[NSString stringWithFormat:@"恭喜你,完成游戏\n用时:%02ld:%02ld:%02ld",fen,miao,haomiao] Target:self Title:@"OH耶!!!" oneAlertTitle:@"挑战时间" twoAlertTitle:@"休息一下" oneActionfunc:^{
            //继续
            [dictData removeAllObjects];
            [collectionvieww reloadData];
            timernumber = 0;
            [self StarGame];
            [self timerStar];
            
            
        } twoActionfunc:^{
            
            
            //返回上一页
            
        }];

    }
    
    //如果没有位置可以再添加数字了 游戏就结束了
    if (dictChange.count ==0) {
        [timerss invalidate];
        timerss = nil;
        
           [UIView pushAlertTwoActionViewWithMessage:@"游戏结束" Target:self Title:@"再挑战一局吧" oneAlertTitle:@"好的" twoAlertTitle:@"休息一下" oneActionfunc:^{
               //继续
               [dictData removeAllObjects];
               [collectionvieww reloadData];
               timernumber = 0;
               [self StarGame];
               [self timerStar];
               
               
           } twoActionfunc:^{
               
               
               //返回上一页
               
           }];
        return;
    }
    
    //随机添加数据。刷新表格
    int random = (int)( (arc4random() % (dictChange.count)));
    NSArray * dictKey = [dictChange allKeys];
    [dictChange setObject:@"2" forKey:dictKey[random]];
    //返回给数据字典
    for (NSString * key in dictKey) {
        
        [dictData setObject:dictChange[key] forKey:key];
        
    }
    [dictChange removeAllObjects];
    //刷新表
    [collectionvieww reloadData];
    
    
    
}
每次插入数字时

相关文章:

  • 2021-09-11
  • 2021-12-08
  • 2022-12-23
  • 2021-09-23
  • 2022-12-23
  • 2021-12-12
  • 2021-11-25
猜你喜欢
  • 2022-12-23
  • 2021-10-22
  • 2021-11-08
  • 2021-10-04
  • 2022-01-16
相关资源
相似解决方案