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

相关文章

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

从入门到精通详解Python虚拟环境完全指南

《从入门到精通详解Python虚拟环境完全指南》Python虚拟环境是一个独立的Python运行环境,它允许你为不同的项目创建隔离的Python环境,下面小编就来和大家详细介绍一下吧... 目录什么是python虚拟环境一、使用venv创建和管理虚拟环境1.1 创建虚拟环境1.2 激活虚拟环境1.3 验证虚

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W

Python实战之SEO优化自动化工具开发指南

《Python实战之SEO优化自动化工具开发指南》在数字化营销时代,搜索引擎优化(SEO)已成为网站获取流量的重要手段,本文将带您使用Python开发一套完整的SEO自动化工具,需要的可以了解下... 目录前言项目概述技术栈选择核心模块实现1. 关键词研究模块2. 网站技术seo检测模块3. 内容优化分析模

基于Java开发一个极简版敏感词检测工具

《基于Java开发一个极简版敏感词检测工具》这篇文章主要为大家详细介绍了如何基于Java开发一个极简版敏感词检测工具,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下... 目录你是否还在为敏感词检测头疼一、极简版Java敏感词检测工具的3大核心优势1.1 优势1:DFA算法驱动,效率提升10

C#使用Spire.XLS快速生成多表格Excel文件

《C#使用Spire.XLS快速生成多表格Excel文件》在日常开发中,我们经常需要将业务数据导出为结构清晰的Excel文件,本文将手把手教你使用Spire.XLS这个强大的.NET组件,只需几行C#... 目录一、Spire.XLS核心优势清单1.1 性能碾压:从3秒到0.5秒的质变1.2 批量操作的优雅

Java List 使用举例(从入门到精通)

《JavaList使用举例(从入门到精通)》本文系统讲解JavaList,涵盖基础概念、核心特性、常用实现(如ArrayList、LinkedList)及性能对比,介绍创建、操作、遍历方法,结合实... 目录一、List 基础概念1.1 什么是 List?1.2 List 的核心特性1.3 List 家族成

Python使用python-pptx自动化操作和生成PPT

《Python使用python-pptx自动化操作和生成PPT》这篇文章主要为大家详细介绍了如何使用python-pptx库实现PPT自动化,并提供实用的代码示例和应用场景,感兴趣的小伙伴可以跟随小编... 目录使用python-pptx操作PPT文档安装python-pptx基础概念创建新的PPT文档查看

Python开发简易网络服务器的示例详解(新手入门)

《Python开发简易网络服务器的示例详解(新手入门)》网络服务器是互联网基础设施的核心组件,它本质上是一个持续运行的程序,负责监听特定端口,本文将使用Python开发一个简单的网络服务器,感兴趣的小... 目录网络服务器基础概念python内置服务器模块1. HTTP服务器模块2. Socket服务器模块