服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - IOS - iOS实现拼图小游戏

iOS实现拼图小游戏

2022-08-01 11:47疾风哥哥 IOS

这篇文章主要为大家详细介绍了iOS实现拼图小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了iOS实现拼图小游戏的具体代码,供大家参考,具体内容如下

首先找到这8张图片,还需要一张空白的图片,自己随便剪一张吧。

iOS实现拼图小游戏

定义三个属性:button可变数组,图片可变数组,正确顺序的图片数组。

?
1
2
3
@property(retain, nonatomic)NSMutableArray *buttonArray;
@property(retain, nonatomic)NSMutableArray *a;
@property(retain, nonatomic)NSArray        *aa;

铺好拼图界面

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
//图片数组a,用来储存每个图片名称,并且用于后来的打乱
self.a = [NSMutableArray arrayWithObjects:@"1.jpg",@"2.jpg",@"3.jpg",@"4.jpg",@"5.jpg",@"6.jpg",@"7.jpg",@"8.jpg",@"9.jpg", nil];
//备份一个正确顺序的图片数组,用于判断游戏是否过关
self.aa = [NSArray arrayWithArray:self.a];
//重新开始按钮
UIButton *star = [[UIButton alloc] initWithFrame:CGRectMake(120, 400, 100, 40)];
[star setTitle:@"重新开始" forState:UIControlStateNormal];
[star setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
star.layer.cornerRadius = 6.6f;
star.layer.backgroundColor = [[UIColor colorWithRed:0.922 green:0.925 blue:0.929 alpha:1]CGColor];
//添加点击事件
[star addTarget:self action:@selector(kaishi) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:star];
[star release];
 
//铺出9个button
    self.buttonArray = [NSMutableArray array];
    NSInteger count = 0;
    NSInteger wight = 351 / 3;
    NSInteger higth = 351 / 3;
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(j * (wight+2) + 10, i * (higth + 2) + 20, wight, higth)];
            button.backgroundColor = [UIColor blackColor];
            //给每个button上图片
            [button setImage:[UIImage imageNamed:self.a[count]] forState:UIControlStateNormal];
            [self.view addSubview:button];
            //给每个button添加点击事件
            [button addTarget:self action:@selector(change:) forControlEvents:UIControlEventTouchUpInside];
            //把button放入数组
            [self.buttonArray addObject:button];
            button.tag = count;
            [button release];
            count++;
        }
}

实现button的点击事件

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
- (void)change:(UIButton *)sender{
    NSInteger flag = 0;
    int p = 0;
    //“9.jpg”是空白的那个,打乱后,得在图片数组里找到所在下标,用flag存在来
    for (NSInteger i = 0; i < 9; i++) {
        if ([self.a[i] isEqualToString:@"9.jpg"]) {
            flag = i;
        }
    }
 
    //如果所点击的button的上下左右其中有一个是空白图片的话,就跟空白图片交换在图片数组的位置
    if (sender.tag - flag == 3 || sender.tag - flag == -3 || sender.tag - flag == 1 || sender.tag - flag == -1) {
        [self.a exchangeObjectAtIndex:flag withObjectAtIndex:sender.tag];
    }
    //重新给每个button上图片
    for (int i = 0; i < 9; i++) {
        [self.buttonArray[i] setImage:[UIImage imageNamed:self.a[i]] forState:UIControlStateNormal];
    }
 
    //判断是否拼图成功,每对应了一张图片p就加一,如果p最后等于9说明游戏通关
    for (int i = 0; i < 9 ; i++) {
        if ([self.a[i] isEqualToString:self.aa[i]]) {
            p++;
        }else{
            break;
        }
    }
    if (p == 9) {
        NSLog(@"%d",p);
        UIAlertView *a = [[UIAlertView alloc] initWithTitle:@"恭喜!" message:@"已通关" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil];
        [a show];
        [a release];
    }
}

打乱所有图片

?
1
2
3
4
5
6
7
8
9
10
11
- (void)kaishi{
//产生0到8两个随机数,通过下标交换图片数组中的两张图片
    for (int i = 0; i < 10; i++) {
        [self.a exchangeObjectAtIndex:(arc4random() % 9)
                    withObjectAtIndex:(arc4random() % 9)];
    }
    //给每个button上图片
    for (int i = 0; i < 9; i++) {
        [self.buttonArray[i] setImage:[UIImage imageNamed:self.a[i]] forState:UIControlStateNormal];
    }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:https://blog.csdn.net/qq_18399879/article/details/49964651

延伸 · 阅读

精彩推荐
  • IOS浅谈WKWebView 在64位设备上的白屏问题

    浅谈WKWebView 在64位设备上的白屏问题

    下面小编就为大家带来一篇浅谈WKWebView 在64位设备上的白屏问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    iOS开发网6162021-03-14
  • IOS实例详解IOS开发之UIWebView

    实例详解IOS开发之UIWebView

    iOS开发之UIWebView 是本文要介绍的内容,UIWebView是iOS sdk中一个最常用的控件,是内置的浏览器控件,我们可以用它来浏览网页、打开文档等等...

    麒麟4942021-01-06
  • IOSIOS代码笔记之勾选"记住密码"整体button

    IOS代码笔记之勾选"记住密码"整体button

    这篇文章主要为大家详细介绍了IOS实现勾选"记住密码"整体button效果的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    iOS开发网3682021-01-21
  • IOStouchesBegan: withEvent: 不执行解决

    touchesBegan: withEvent: 不执行解决

    这篇文章主要介绍了touchesBegan: withEvent: 不执行解决的相关资料,需要的朋友可以参考下...

    iOS开发网4812021-02-26
  • IOSiOS实现简单的二级菜单效果

    iOS实现简单的二级菜单效果

    这篇文章给大家主要介绍的是利用iOS如何实现简单的菜单效果,文中给出了详细的示例代码,而且实现的比较简单,适合新人学习使用。感兴趣的朋友们可以...

    LYSNote6652021-02-05
  • IOSiOS 12中无法获取WiFi的SSID了?别慌看这里!

    iOS 12中无法获取WiFi的SSID了?别慌看这里!

    这篇文章主要给大家介绍了关于iOS 12中无法获取WiFi的SSID的相关资料,文中通过示例代码以及图文介绍的非常详细,对大家的学习或者工作具有一定的参考...

    QiShare6362021-05-13
  • IOSiOS开发中使用文字图标iconfont的应用示例

    iOS开发中使用文字图标iconfont的应用示例

    这篇文章主要介绍了iOS开发中使用文字图标iconfont的应用示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    残无殇4842021-04-02
  • IOSIOS 开发之自定义按钮实现文字图片位置随意定制

    IOS 开发之自定义按钮实现文字图片位置随意定制

    这篇文章主要介绍了IOS 开发之自定义按钮实现文字图片位置随意定制的相关资料,这里附有实例代码及实现效果图,需要的朋友可以参考下...

    open-open5372021-02-26