1、Collection 创建cell
2、cell上添加一个view,用来添加手势
3、字典用来存放数据-》每次执行StarGame数组接收没有数字的字典,原来字典对应的删除-》随机选中改变数组-》插回原来数据-》每次滑动 用选择排序分别相加相邻且相等的数据后,再用选择排序 进行排序(详情下文)-》刷新cell-》♻️
//数据 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]; }