扫雷小游戏



#import "MyViewController.h"


#define BOOMWIDTH 40

#define BOOMHEIGHT 40


@interface MyViewController ()


@end


@implementation MyViewController



-(void)loadView

{

    [super loadView];

    

    NSMutableArray *array = [NSMutableArray array];

    

    // 铺地板

    CGRect rect = CGRectMake(0, 0, BOOMWIDTH, BOOMHEIGHT);

    for (int i = 0; i < 8; i++) {

        rect.origin.y = BOOMHEIGHT * i + 40;

        for (int j = 0; j < 8; j++) {

            rect.origin.x = BOOMWIDTH * j + 20;

            UILabel *boomLabel = [[UILabel alloc] initWithFrame:rect];

            [self.view addSubview:boomLabel];

            [boomLabel release];

            [boomLabel setBackgroundColor:[UIColor whiteColor]];

            [boomLabel.layer setBorderWidth:0.8];

            [boomLabel.layer setBorderColor:[[UIColor grayColor] CGColor]];

            [boomLabel setTag:(i + 1) * 100 + j + 1];

            [array addObject:boomLabel];

        }

    }

    // 随机产生雷, 产生一个雷, 就在雷的周围产生数字(随机抽出一个,然后移除)

    

    //随机出5个雷

    for (int i = 0; i < 5; i++) {

        unsigned int rIndex = arc4random() % array.count;

        UILabel *boomLabel = [array objectAtIndex:rIndex];

        [boomLabel setText:@"*"];

        [array removeObject:boomLabel];

        [boomLabel setTextAlignment:NSTextAlignmentCenter]; // 居中;

        [boomLabel setFont:[UIFont systemFontOfSize:30]];

        

        // 添加数字

        // 先算出tag值,取出label + 1;(放在数组中)

        int offset[8] = {-100 - 1, -100, -100 + 1, -1, +1, +100 - 1, +100, +100 + 1};

        // 雷的周围写上数字

        for (int i = 0; i < 8; i++) {

            NSInteger newTag = boomLabel.tag + offset[i];

            UILabel *newLabel = (UILabel *)[self.view viewWithTag:newTag];

            if ([newLabel.text isEqualToString:@"*"]) {

                continue; // 雷的地方不能在覆盖数字

            }

            NSInteger number = newLabel.text.integerValue + 1;// 雷数

            [newLabel setText:[NSString stringWithFormat:@"%ld", number]];

        }

    }

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值