一个小小的关灯游戏

来源:互联网 发布:有益网络怎么样 编辑:程序博客网 时间:2024/05/01 09:14

初学一些基本的UI视图控件,自己做了一个小小的关灯游戏,效果是点击一块按钮的同时,连同本身和上下左右四块同时改变,以下为效果图:

此图为刚运行时的界面:


当点击一块时,会变化为:


然后点击红色块中最上面的一块则会变成:


由此大家可以看到第二次点击时,被点击色块及周围四块,原本是红色的变为黑色,原本是黑色的变为红色,那么这是如何实现的呢?

(1)用两层for循环嵌套建立出一个矩形阵的按钮,同时对每一个按钮设置tag值标记,代码如下:

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

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

            UIButton *button = [UIButtonbuttonWithType:UIButtonTypeSystem];

            button.frame =CGRectMake(5 + i *45,20 + j *45,40, 40);

            button.backgroundColor = [UIColorblackColor];

            [self.viewaddSubview:button];

            button.tag =10001 + j *100 + i;

            [button addTarget:selfaction:@selector(buttonClick:)forControlEvents:UIControlEventTouchUpInside];

        }

    }

(2)每当点击一个按钮时,就触发一个方法,要将其本身及周围四块均提取出来,对于每一块都要判断颜色的变化.首先取得当前按钮的tag值,再根据tag值的定义取得其周围四块的tag值,将五个按钮放入一个数组中,最后用一个for循环遍历数组的每一个元素对其颜色进行判断,如果是黑色就变为红色,如果是红色就变为黑色.代码如下:

- (void)buttonClick:(UIButton *)button

{

   NSInteger tag = button.tag;

   NSMutableArray *arr = [NSMutableArrayarrayWithObjects:(UIButton *)[self.viewviewWithTag:tag +1], (UIButton *)[self.viewviewWithTag:tag -1], (UIButton *)[self.viewviewWithTag:tag +100], (UIButton *)[self.viewviewWithTag:tag -100], button, nil];

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

       UIButton *bt = [arrobjectAtIndex:i];

       if (bt.backgroundColor == [UIColorredColor]) {

            bt.backgroundColor = [UIColorblackColor];

        }else {

            bt.backgroundColor = [UIColorredColor];

        }

    }

}


这样就可以实现一个有意思的关灯游戏啦!





0 0