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

本文主要是介绍IOS开发入门基本知识——UIButton生成的关灯游戏(tag值的灵活运用),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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


实现思路,先贴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值。意思就是,当前被单击的按钮和自己周围的按钮改变颜色,其余则不改变。


转自:http://blog.csdn.net/lanlianhuazx/article/details/9199389

这篇关于IOS开发入门基本知识——UIButton生成的关灯游戏(tag值的灵活运用)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/957207

相关文章

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

java中使用POI生成Excel并导出过程

《java中使用POI生成Excel并导出过程》:本文主要介绍java中使用POI生成Excel并导出过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求说明及实现方式需求完成通用代码版本1版本2结果展示type参数为atype参数为b总结注:本文章中代码均为

在java中如何将inputStream对象转换为File对象(不生成本地文件)

《在java中如何将inputStream对象转换为File对象(不生成本地文件)》:本文主要介绍在java中如何将inputStream对象转换为File对象(不生成本地文件),具有很好的参考价... 目录需求说明问题解决总结需求说明在后端中通过POI生成Excel文件流,将输出流(outputStre

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

基于Python开发批量提取Excel图片的小工具

《基于Python开发批量提取Excel图片的小工具》这篇文章主要为大家详细介绍了如何使用Python中的openpyxl库开发一个小工具,可以实现批量提取Excel图片,有需要的小伙伴可以参考一下... 目前有一个需求,就是批量读取当前目录下所有文件夹里的Excel文件,去获取出Excel文件中的图片,并

C/C++随机数生成的五种方法

《C/C++随机数生成的五种方法》C++作为一种古老的编程语言,其随机数生成的方法已经经历了多次的变革,早期的C++版本使用的是rand()函数和RAND_MAX常量,这种方法虽然简单,但并不总是提供... 目录C/C++ 随机数生成方法1. 使用 rand() 和 srand()2. 使用 <random