代码改变世界

[~!]一个被删掉的小游戏

2015-12-20 15:48  Jan1027  阅读(207)  评论(0编辑  收藏  举报

  突发奇想的想搞个游戏:点击中间的灯泡,其状态会由关闭改为打开,而且它的上下左右 四个灯泡执行同样的操作。再次点击,则其本身及上下左右四个按钮状态修改。  无论点击任何一个灯泡,其本身及上下左右四个灯泡皆改变状态。 (全部点亮即过关...)

   为了确保游戏没那么难过关, 我仅仅设置了 8 行 6列,如上图所示:

  1.首先当然是在视图上放置Button控件,为了方便将来更改它的难度,我设置了两个宏,分别代表它的行和列。同样还设置了一个宏代表每个Button之间的间隔

#define Row 8
#define Col 7
#define Space 50

  2.其次开始规划视图,可以看出,这些控件显然是有规律放置的,所以在此告诫初学者,不要傻乎乎的创建48个Button对象。在这里,我们运用到双层for循环来创建Button,当然在此要精确计算每个Button的Frame值,排列整齐。尤其需要注意的是这里的tag值,这个值设置的很有讲究,在后面的方法中就能看出。

for (int i = 1; i <= Row; i++) {
        for (int j = 1; j <= Col; j++) {
            UIButton *Btn = [UIButton buttonWithType:UIButtonTypeCustom];
            Btn.frame = CGRectMake(15 + (j - 1) * Space, 80 + (i - 1) * Space, 40, 40);
            [Btn setImage:[UIImage imageNamed:@"close"] forState:UIControlStateNormal];//正常状态下显示为关闭状态
            [Btn setImage:[UIImage imageNamed:@"light"] forState:UIControlStateSelected];//被选中状态下为打开状态
            Btn.tag = i * 100 + j;
            [Btn addTarget:self action:@selector(clickAction:) forControlEvents:UIControlEventTouchUpInside];
            [self.view addSubview:Btn];
            
        
        }

  3.这里需要声明一个方法来响应Button的触摸事件

- (void)clickAction:(UIButton *)sender {
    
    sender.selected = !sender.selected;//自身改变状态
    UIButton *btn1 = (UIButton *)[self.view viewWithTag:sender.tag + 1];//自身右边Button的tag值
    UIButton *btn2 = (UIButton *)[self.view viewWithTag:sender.tag - 1];//左边Button的tag值
    UIButton *btn3 = (UIButton *)[self.view viewWithTag:sender.tag + 100];//下方Button的tag值
    UIButton *btn4 = (UIButton *)[self.view viewWithTag:sender.tag - 100];//上方Button的tag值
    btn1.selected = !btn1.selected;
    btn2.selected = !btn2.selected;
    btn3.selected = !btn3.selected;
    btn4.selected = !btn4.selected;   //相应的Button改变其状态
    
}

  这么看来,一个简单的小游戏已经做出来了,但是我好像没有玩它的欲望,因为我玩了半天,并不能使所有的灯全亮。一气之下,就把游戏删了,end.