就这些代码敲了我两个小时。。。。。。

//  ViewController.m

//  扫雷

//

//  Created by 晚起的蚂蚁 on 2017/3/22.

//  Copyright © 2017年 晚起的蚂蚁. All rights reserved.

//

#define Width [UIScreen mainScreen].bounds.size.width

#define Height [UIScreen mainScreen].bounds.size.height

#define NUM           //格子边长个数

#define NUMRED       //雷的个数

#import "ViewController.h"

@interface ViewController ()

{

UIImageView* imageView;

NSMutableArray* dataSource;//雷的位置

NSMutableArray* allArr;    //所有按钮的数字

}

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

self.view.backgroundColor=[UIColor whiteColor];

[self createImageView];

[self createButton];

[self createData];

[self numberOfRedBtn];

}

//创建背景视图

-(void)createImageView{

, Width, Width)];

imageView.image=[UIImage imageNamed:@""];

imageView.userInteractionEnabled=YES;

imageView.backgroundColor=[UIColor greenColor];

[self.view addSubview:imageView];

, , )];

imageViewHeader.image=[UIImage imageNamed:@"0fd7eeeee49905d8e4d7f1b02b937f40.png"];

[self.view addSubview:imageViewHeader];

, , )];

imageViewFoot.image=[UIImage imageNamed:@"a10e9fc0ccdc64360c8a90f97918b0a3.png"];

[self.view addSubview:imageViewFoot];

}

//创建按钮

-(void)createButton{

CGFloat btnHeight=imageView.frame.size.width/NUM;

; i<NUM; i++) {

; j<NUM; j++) {

UIButton* btn=[UIButton buttonWithType:UIButtonTypeCustom];

btn., btnHeight-);

btn.;

[btn addTarget:self action:@selector(btnAction:) forControlEvents:UIControlEventTouchUpInside];

[btn.];

btn.layer.borderColor = [UIColor grayColor].CGColor;

btn.backgroundColor=[UIColor brownColor];

[imageView addSubview:btn];

}

}

}

//按钮点击事件

-(void)btnAction:(UIButton*)sender{

; i<dataSource.count; i++) {

if(sender.tag==[dataSource[i] intValue]){

NSArray* arr=[imageView subviews];

; k<arr.count; k++) {

];

]) {

btn.backgroundColor=[UIColor redColor];

}else{

[btn setTitle:allArr[k] forState:UIControlStateNormal];

btn.backgroundColor=[UIColor blueColor];

}

}

return;

}

}

] forState:UIControlStateNormal];

sender.backgroundColor=[UIColor blueColor];

}

//随机分布雷

-(void)createData{

dataSource=[NSMutableArray new];

int numB=NUM*NUM;

;

) {

number=(;

;

) {

[dataSource addObject:[NSString stringWithFormat:@"%d",number]];

}else if(dataSource.count<NUMRED){

for (NSString* str in dataSource) {

if ([str intValue]==number) break;

else time++;

if (time==dataSource.count) {

[dataSource addObject:[NSString stringWithFormat:@"%d",number]];

break;

}

}

}else{

break;

}

}

}

//非雷区的数字

-(void)numberOfRedBtn{

allArr=[NSMutableArray new];

; i<NUM*NUM; i++) {

[allArr addObject:@"0"];

}

//按钮的坐标

;

;

;

NSArray* btnArr=[imageView subviews];

for (UIButton* btn in btnArr) {

if ((btn.backgroundColor!=[UIColor redColor])) {

coordinateX=(btn.)%NUM;

coordinateY=(btn.)/NUM;

//左

) {

]) {

number++;

}

}else{

&&coordinateY<) {

)+(coordinateY+)*]) {

number++;

}

)+(coordinateY-)*]) {

number++;

}

}else{

)+(coordinateY+)*]) {

number++;

}

}

}

//右

) {

]) {

number++;

}

}else{

&&coordinateY<) {

)+(coordinateY+)*]) {

number++;

}

)+(coordinateY-)*]) {

number++;

}

}else{

)+(coordinateY-)*]) {

number++;

}

}

}

//上

) {

)*]) {

number++;

}

}else{

&&coordinateX<) {

)*)+]) {

number++;

}

)*)+]) {

number++;

}

}else{

)*)+]) {

number++;

}

}

}

//下

) {

)*]) {

number++;

}

}else{

&&coordinateX<) {

)*)+]) {

number++;

}

)*)+]) {

number++;

}

}else{

)*)+]) {

number++;

}

}

}

//中间按钮的斜角

&&coordinateY<&&coordinateX>&&coordinateX<) {

)*)+]) {

number++;

}

)*)+]) {

number++;

}

)*)+]) {

number++;

}

)*)+]) {

number++;

}

}

//将数据存入数组

NSString* numberStr=[NSString stringWithFormat:@"%ld",number];

//[btn setTitle:numberStr forState:UIControlStateNormal];

]=numberStr;

number=;

}

}

}

//判断是该按钮是否为雷

-(BOOL)tagIsEqulTag:(NSInteger)tag{

; i<dataSource.count; i++) {

if(tag==[dataSource[i] intValue]){

return YES;

}

}

return NO;

}

- (void)didReceiveMemoryWarning {

[super didReceiveMemoryWarning];

}

@end

ios扫雷的更多相关文章

  1. iOS 扫雷游戏

    代码地址如下:http://www.demodashi.com/demo/11254.html 1.项目结构图 Viewcontroller:扫雷逻辑代码 LevelModel:扫雷难度选择代码 2. ...

  2. iOS - 适配 iOS 13 之工兵连扫雷

    iOS 13 支持适配的机型 目前最新 iPhone 11.iPhone 11 Pro和iPhone 11 Pro Max iPhone X.iPhone XR.iPhone XS.iPhone XS ...

  3. 神奇的NOIP模拟赛 T1 LGTB 玩扫雷

    LGTB 玩扫雷 在一个n m 的棋盘上,有位置上有雷(用“*” 表示),其他位置是空地(用“.” 表示).LGTB 想在每个空地上写下它周围8 个方向相邻的格子中有几个雷.请帮助他输出写了之后的棋盘 ...

  4. iOS开发环境C语言基础 数组 函数

    1 求数组元素的最大值 1.1 问题 创建程序,实现查询数组中最大值的功能,需求为:创建一个长度为10的数组,数组内放置10个0~99之间(包含0,包含99)的随机数作为数组内容,要求查询出数组中的最 ...

  5. (史上最全的ios源码汇总)

    按钮类         按钮 Drop Down Control         http://www.apkbus.com/android-106661-1-1.html 按钮-Circular M ...

  6. 2015最新iOS学习线路图

    iOS是由苹果公司开发的移动操作系统,以xcode为主要开发工具,具有简单易用的界面.令人惊叹的功能,以及超强的稳定性,已经成为iPhone.iPad 和iPod touch 的强大基础:iOS 内置 ...

  7. HDU 5965(三行扫雷 dp)

    题意是在一个 3 行 n 列的图上进行扫雷,中间一行没有雷,且中间一行的每一格都会显示周围的雷数,问根据已知的雷数在上下两行设置地雷的方法数. 分析知每一列所填雷数的和与周围的雷数有关,但每列具体的填 ...

  8. HDU 5965 扫雷

    扫雷游戏是晨晨和小璐特别喜欢的智力游戏,她俩最近沉迷其中无法自拔. 该游戏的界面是一个矩阵,矩阵中有些格子中有一个地雷,其余格子中没有地雷. 游戏中,格子可能处于己知和未知的状态.如果一个己知的格子中 ...

  9. 【BZOJ1088】扫雷(递推)

    [BZOJ1088]扫雷(递推) 题面 BZOJ 题解 忽然发现这就是一道逗逼题. 只需要枚举一下第一个是什么,后面都能够推出来了.. #include<iostream> using n ...

随机推荐

  1. 30岁程序员的选择,一线OR二线?

    作为一个30刚出头的IT行业从业者,先介绍下我自己的情况.虽然不具有代表性,但是也可以作为一个参考.本人08年本科毕业于一所还算不错的211大学计算机专业(04年去的时候综合排名38,毕业走时排名45 ...

  2. js中的匿名函数自执行

    随笔,java中因为有修饰符的存在,那就有private类的存在,js不一样,没有修饰词一说,因此为了防止全局变量的污染,js中就出现了匿名函数,直接上code,看到的人可以自己体会: (functi ...

  3. 探索Windows命令行系列(5):几个实用的命令例解

    1.关机命令(shutdown) 2.管理 Windows 服务(sc) 3.管理任务进程(tasklist.taskkill) 4.显示 TCP/IP 配置值(ipconfig) 5.网络诊断工具( ...

  4. 如何使用apktool反编译,查看androidmanifest的内容

    1.下载apktool http://pan.baidu.com/s/1o7Jy090 2.使用方法

  5. 【巨杉答疑】巨杉数据库和mongodb有什么关系吗?

    哈罗,艾瑞巴蒂~巨杉答疑栏目今日上线啦! 巨杉数据库作为商业化开源软件,已经拥有大量社区用户.开源至今,大到分布式数据库原理.架构问题,小到SDB巨杉数据库的安装使用问题,大家似乎都有很多问题想要和我 ...

  6. [Android FrameWork 6.0源码学习] ViewGroup的addView函数分析

    Android中整个的View的组装是采用组合模式. ViewGroup就相当与树根,各种Layout就相当于枝干,各种子View,就相当于树叶. 至于View类.我们就当它是个种子吧.哈哈! Vie ...

  7. 通过history解决ajax不支持前进/后退/刷新

    前言: 现在前后端基本都是通过ajax实现前后端接口数据的交互,但是,ajax有个小小的劣势,即:不支持浏览器“后退”和“前进“键. 但是,现在我们可以通过H5的histroy属性 解决ajax在交互 ...

  8. TCP长连接与短连接的原理及区别

    一.当网络通信时采用TCP协议时:  1.过程: 第一步:(在真正的读写操作之前)Server 和Client 之间必须建立一个连接,连接的建立需要三次握手 经典的三次握手示意图: 第二步:进行读写操 ...

  9. TortoiseGit上传项目到github方法(超简单)

    Github是咱广大开发者用的非常多的项目版本管理网站,项目托管可以是私人的(private)或者公开的(public),私人的收费,一个月7美金.咱这里就只说我们个人使用的,一般都是代码对外开放的: ...

  10. set-集合功能介绍

    叨逼叨:#集合 不可重复的列表 可变类型#1.添加 无则添加有则不操作 不可重复 # se = {'alex','eric','seven'} # se.add('qiqi') # se.add('b ...