关灯游戏总结
首先创建“灯”类,继承UIView。
创建“灯”的个数,在ViewController.m内创建多个大小相等的视图框,因为我们这些视图窗都要放在这个View里面。
这时候可用用for循环,嵌套创建出行和列,然后给各个窗口添加一个tag标签,使用 窗口名.tag,方便稍后使用。
//在屏幕上创建出4*7 28个视图(布局)
for (int j=0; j<7; j++) {
for (int i=0; i<4; i++) {
Light *deng=[[Light alloc]initWithFrame:CGRectMake(i*80+5, j*60+10, 70, 50)];
deng.tag=100+10*j+i;//为每个视图加上标签
[self.view addSubview:deng];
}
}
然后我们来丰富“灯”的内容。
给他换换背景颜色(用图片代替,图片名为2.png):
self.backgroundColor=[UIColor colorWithPatternImage:[UIImage imageNamed:@"2"]];
接下来我们来描写触摸时触发的事件:
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
Light *lt1=(Light*)[self.superview viewWithTag:self.tag-1];
Light *lt2=(Light*)[self.superview viewWithTag:self.tag+1];
Light *lt3=(Light*)[self.superview viewWithTag:self.tag-10];
Light *lt4=(Light*)[self.superview viewWithTag:self.tag+10];
//以上为点击一个视图时,周围(上下左右)的视图跟着被选中。
紧跟着我们给每个视图加入changeImage的动画效果,翻转
[self changeImage];
[lt1 changeImage];
[lt2 changeImage];
[lt3 changeImage];
[lt4 changeImage];
}
翻转动画效果的实现如下:
-(void)changeImage{
[UIView beginAnimations:nil context:nil];//动画开始
[UIView setAnimationDuration:1];
//UIAnimationTransition翻转动画,是个枚举类,1为UIViewAnimationTransitionFlipFromLeft(向左翻转)
[UIView setAnimationTransition:1 forView:self cache:YES];
[UIView commitAnimations];
增加翻转的内容以丰富游戏的趣味性,这时候我们就设计这么一个思想:当点击窗口1时 如果显示为A,那么变为B(四周窗口也进行此操作)。这时候我们就要有个判断的条件,所以我们先定义个实例用于判断:@property(assign,nonatomic)BOOL flag;//用于标记开关
注:FANMIAN和ZHENGMIAN 使用的是宏用法,定义的内容:
#define ZHENGMIAN [UIColor colorWithPatternImage:[UIImage imageNamed:@"1"]]
#define FANMIAN [UIColor colorWithPatternImage:[UIImage imageNamed:@"2"]]
//用三目运算写
self.backgroundColor=self.flag?FANMIAN:ZHENGMIAN;
self.flag=!self.flag;
//普通判断法写
// if (self.flag==YES) {
// self.backgroundColor=FANMIAN;
// self.flag=NO;
// }
//else{
// self.backgroundColor=ZHENGMIAN;
// self.flag=YES;
//}
}
这样我们就完成了整个游戏的基本创作,如果需要给他添加更多的更丰富的内容,我们可以在各个节点进行丰富~