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

相关文章

使用Python自动化生成PPT并结合LLM生成内容的代码解析

《使用Python自动化生成PPT并结合LLM生成内容的代码解析》PowerPoint是常用的文档工具,但手动设计和排版耗时耗力,本文将展示如何通过Python自动化提取PPT样式并生成新PPT,同时... 目录核心代码解析1. 提取 PPT 样式到 jsON关键步骤:代码片段:2. 应用 JSON 样式到

SpringBoot实现二维码生成的详细步骤与完整代码

《SpringBoot实现二维码生成的详细步骤与完整代码》如今,二维码的应用场景非常广泛,从支付到信息分享,二维码都扮演着重要角色,SpringBoot是一个非常流行的Java基于Spring框架的微... 目录一、环境搭建二、创建 Spring Boot 项目三、引入二维码生成依赖四、编写二维码生成代码五

一文教你如何解决Python开发总是import出错的问题

《一文教你如何解决Python开发总是import出错的问题》经常朋友碰到Python开发的过程中import包报错的问题,所以本文将和大家介绍一下可编辑安装(EditableInstall)模式,可... 目录摘要1. 可编辑安装(Editable Install)模式到底在解决什么问题?2. 原理3.

Android与iOS设备MAC地址生成原理及Java实现详解

《Android与iOS设备MAC地址生成原理及Java实现详解》在无线网络通信中,MAC(MediaAccessControl)地址是设备的唯一网络标识符,本文主要介绍了Android与iOS设备M... 目录引言1. MAC地址基础1.1 MAC地址的组成1.2 MAC地址的分类2. android与I

POI从入门到实战轻松完成EasyExcel使用及Excel导入导出功能

《POI从入门到实战轻松完成EasyExcel使用及Excel导入导出功能》ApachePOI是一个流行的Java库,用于处理MicrosoftOffice格式文件,提供丰富API来创建、读取和修改O... 目录前言:Apache POIEasyPoiEasyExcel一、EasyExcel1.1、核心特性

Python+PyQt5开发一个Windows电脑启动项管理神器

《Python+PyQt5开发一个Windows电脑启动项管理神器》:本文主要介绍如何使用PyQt5开发一款颜值与功能并存的Windows启动项管理工具,不仅能查看/删除现有启动项,还能智能添加新... 目录开篇:为什么我们需要启动项管理工具功能全景图核心技术解析1. Windows注册表操作2. 启动文件

使用Python开发Markdown兼容公式格式转换工具

《使用Python开发Markdown兼容公式格式转换工具》在技术写作中我们经常遇到公式格式问题,例如MathML无法显示,LaTeX格式错乱等,所以本文我们将使用Python开发Markdown兼容... 目录一、工具背景二、环境配置(Windows 10/11)1. 创建conda环境2. 获取XSLT

PyQt5+Python-docx实现一键生成测试报告

《PyQt5+Python-docx实现一键生成测试报告》作为一名测试工程师,你是否经历过手动填写测试报告的痛苦,本文将用Python的PyQt5和python-docx库,打造一款测试报告一键生成工... 目录引言工具功能亮点工具设计思路1. 界面设计:PyQt5实现数据输入2. 文档生成:python-

Android开发环境配置避坑指南

《Android开发环境配置避坑指南》本文主要介绍了Android开发环境配置过程中遇到的问题及解决方案,包括VPN注意事项、工具版本统一、Gerrit邮箱配置、Git拉取和提交代码、MergevsR... 目录网络环境:VPN 注意事项工具版本统一:android Studio & JDKGerrit的邮

Python开发文字版随机事件游戏的项目实例

《Python开发文字版随机事件游戏的项目实例》随机事件游戏是一种通过生成不可预测的事件来增强游戏体验的类型,在这篇博文中,我们将使用Python开发一款文字版随机事件游戏,通过这个项目,读者不仅能够... 目录项目概述2.1 游戏概念2.2 游戏特色2.3 目标玩家群体技术选择与环境准备3.1 开发环境3