IOS开发入门基本知识——UIButton生成的关灯游戏(tag值的灵活运用)

来源:互联网 发布:荔枝软件下载 编辑:程序博客网 时间:2024/05/16 13:07

关灯游戏,灯分为 两种状态,绿和红,当被点击的时候,自己和周围的等变为相反的颜色,游戏以全部呈现为另外一种颜色为赢


实现思路,先贴button,button很多,在帖的时候肯定不能一个一个设置,同时,考虑到,button之间存在的关系,自己,和自己周围的颜色会发生变化,那么用什么来作为索引,可以实现?在界面中,每一个button有一个tag值,为0的tag值是主界面,所以,在设置的时候,要注意不能让其中任一个button的tag值为零,同时还要保持button之间的相关性不被打乱。那么,设定的过程呢,就要避免引用1 2 这样的接近数字。

先来新建一个rootviewcontroller

在delegate设置root属性

ButtonViewController*rootView=[[ButtonViewController alloc]init];
self.window.rootViewController=rootView;

[rootView release];


接下来,采用数组的方式,实现uibutton的摆放。

count=0;
UIImage*one=[UIImage imageNamed:@"1.png"];
for (int i=0; i<7; i++) {
for (int j=0; j<5; j++) {
count++;
UIButton*button=[UIButton buttonWithType:UIButtonTypeCustom];
button.frame=CGRectMake(20+(60*j), 30+i*60, 40, 40);
button.tag=count;
[button setImage:one forState:UIControlStateNormal];
[button addTarget:self action:@selector(touch:) forControlEvents:UIControlEventTouchDown];
[self.view addSubview:button];
}
count+=5;
}
以上代码中,先设定一个计数器,但同时,避免计数器为零,在这里0仅为初始值。避免为0的最好方法,还没有进入运算技术的时候,先加一下。count++; 然后计算button的像素,和iPhone的标准像素320*480但是除去通知栏 320X460  其中灯的数目自己来确定,计算一下就好。

button被点击,触碰到touch方法,把自己作为传递者在方法中实现

-(void)touch:(id)sender
{
UIButton*but=(UIButton*)sender;

for (int i=1; i<=65; i++) {
UIButton *current=(UIButton *)[self.view viewWithTag:i];
if ((i==but.tag)||(i==(but.tag-1))||(i==but.tag+1)||(i==but.tag+10)||(i==but.tag-10)) {
if (current.currentImage==[UIImage imageNamed:@"1.png"] )
{
[current setImage:[UIImage imageNamed:@"2.png"] forState:UIControlStateNormal];
}
else{
[current setImage:[UIImage imageNamed:@"1.png"] forState:UIControlStateNormal];
}
}
}
}
其中的but 是作为一个传递者进行的。在这里另外设置一个current表示此刻被单击的button,传递一个方法。通过每个button的tag值来实现定位。我们为了避免在这个点按过程中取到tag值为0,同时更为了方便计数,通过这样的值传递tag 来实现简单的操作。算起来,其实呈现在这个current button被点击的情况有四个一个是自己,还有一个是自己上面的,一个左边的,一个右边的,一个下面的,他们之间为了简单建一个连接,左右均相差1,上下相差10 ,如此一来,他们之间就可以明晰关系。同时防止其中任何一个tag为0.

在以上的代码中 but是任何一个按钮,  current是当前被选中的按钮,他们之间的关系,是引起和被引起的关系。其中i作为他们中间的桥梁显示着被选中的current 的tag值。意思就是,当前被单击的按钮和自己周围的按钮改变颜色,其余则不改变。


原创粉丝点击