美文网首页
ios 五子棋二

ios 五子棋二

作者: 微笑城ios | 来源:发表于2019-05-09 22:41 被阅读0次

接着之前的 五子棋项目写的

棋盘已经画好了 下面开始添加棋子

Simulator Screen Shot - iPhone XS Max - 2019-05-09 at 22.26.41.png

计算棋子的位子

  1. 画一个棋盘
// 画一个标准的棋盘
- (UIImage *)drawImageCheckerboard
{
    CGSize size = CGSizeMake(SCREEN_WIDTHL - 30, SCREEN_WIDTHL - 30);
    
    UIGraphicsBeginImageContext(size);
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    
    CGContextSetLineWidth(ctx, 0.8f);
    
    /*每个格子的宽度*/
    CGFloat gridWidth = size.width/gridCount;
    self.gridWidth = gridWidth;
    /**
     画一个外框
     */
    CGPoint aPoints[4];//坐标点
    aPoints[0] =CGPointMake(0, 0);//坐标1
    aPoints[1] =CGPointMake(size.width, 0);//坐标2
    aPoints[2] =CGPointMake(size.width, size.height);
    aPoints[3] =CGPointMake(0, size.height);
    CGContextAddLines(ctx, aPoints, 5);

    for (int i = 0; i <= gridCount - 1; i ++) {
        CGContextMoveToPoint(ctx,  i * gridWidth + gridWidth , gridWidth);
        CGContextAddLineToPoint(ctx, i * gridWidth + gridWidth , (gridCount - 1) * gridWidth);
    }

    for (int i = 0 ; i <= gridCount - 1; i ++) {
        CGContextMoveToPoint(ctx, gridWidth , gridWidth * i + gridWidth);
        CGContextAddLineToPoint(ctx, gridWidth * (gridCount - 1) ,  i * gridWidth + gridWidth);
    }
    
    CGContextSetStrokeColorWithColor(ctx, [UIColor blackColor].CGColor);
    CGContextStrokePath(ctx);
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return image;
}

  1. 添加点击事件的方法
self.imageView = [[UIImageView alloc] initWithImage:[self drawImageCheckerboard]];
    [self.view addSubview:self.imageView];
    self.imageView.frame = CGRectMake(15, Height_NavBar + 50, SCREEN_WIDTHL - 30, SCREEN_WIDTHL - 30);
    self.imageView.backgroundColor = RGB16(0xCD9B1D);
    
    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapaction:)];
    [self.imageView addGestureRecognizer:tap];
    self.imageView.userInteractionEnabled = true;
  1. 获取点击的位置
  • 获取带点击的位置, 在位置上添加 0.5 的半径, 除以半径长度 , 可以得到关于位置 , x 和 y 的坐标
- (void)tapaction: (UITapGestureRecognizer *)tap
{
    CGPoint point = [tap locationInView:self.imageView];
    NSInteger rol = (point.x - self.gridWidth * 0.5)/self.gridWidth;
    NSInteger cow = (point.y - self.gridWidth * 0.5)/self.gridWidth;
    // 将点击的位置住转换到对应点上面去
    CGPoint piecPoint = CGPointMake(rol, cow);
}
  1. 在点击的位置上添加 棋子
#pragma mark -- 添加棋子的坐标
- (BOOL)addPieseWithPoint: (CGPoint)point
{
    //转换成为对应的坐标点
    CGPoint arcPoint = CGPointZero;
    arcPoint.x = (point.x + 0.5) * self.gridWidth;
    arcPoint.y = (point.y + 0.5) * self.gridWidth;
    
// 生成棋子对象
    PieceOBJ *piec_obj = [[PieceOBJ alloc] init];
    piec_obj.isBlack = self.manager.isBlack;
    piec_obj.point = point;
    
    if ([self.manager checkIsSuccessWithPieceObj:piec_obj] == false) {
        return false;
    }
    
    UIColor *color = RGB16(0xF7F7F7);
    if (self.manager.isBlack) {
        color = [UIColor blackColor];
    }
    
    [self addLayerFrame:CGRectMake(arcPoint.x + 2.5, arcPoint.y + 2.5, self.gridWidth - 5, self.gridWidth - 5) color:color];
    
    if (self.manager.isWin) {
        [self someBoddyWinWithIsBlack:self.manager.isBlack];
        return false;
    }
    
    self.manager.isBlack = !self.manager.isBlack;
    return true;
}

// 实现添加 棋子的方式

- (void)addLayerFrame: (CGRect )frame color: (UIColor *)color
{
  // 创建layer
    CAShapeLayer *arcLayer = [CAShapeLayer layer];
    CGMutablePathRef path = CGPathCreateMutable();
// 颜色的填充
    arcLayer.fillColor = color.CGColor;
    
// 实现画圆的位置和路径
    CGPathAddEllipseInRect(path, nil, frame);
    arcLayer.path = path;
    CGPathRelease(path);
// 完成画圆, 将棋子添加到 图片上显示出来
    [self.imageView.layer addSublayer:arcLayer];
}

相关文章

  • ios 五子棋二

    接着之前的 五子棋项目写的 棋盘已经画好了 下面开始添加棋子 计算棋子的位子 画一个棋盘 添加点击事件的方法 获取...

  • iOS蓝牙学习之GameKit

    GameKit.framework(用法简单)只能用于iOS设备之间的连接,多用于游戏(比如五子棋对战),从iOS...

  • 第三讲:为实战服务

    五子棋发展行情 1、五子棋传承 2、五子棋规则 3、五子棋棋評 4、五子棋风格 5、五子棋名实 黑7不能说的不说(...

  • 五子棋

    一天的中午,我看到我的朋友在玩五子棋,我也加入了其中,从此,我喜欢玩上了五子棋。 第二天,我也买了五子棋,并和我的...

  • 《彼岸随记》(19-22)——五子棋

    《彼岸随记》(19-22)…五子棋 外孙女喜欢一种棋牌类游戏,规则与中国的围棋五子棋类同,不过参加人数可以超过二...

  • 贝贝五子棋 - 单机双人联机

    贝贝五子棋是一款画风简洁,棋力强大,功能丰富的五子棋游戏。集联网五子棋、单机五子棋于一体,是一款经典小游戏。联网模...

  • 儿童五子棋

    一、孩子学五子棋的好处 小孩子学习五子棋可以从用五子棋摆图形开始。当然五子棋里的最简单的图形就是直线了。可以摆上三...

  • 五子棋

    五子棋,你们玩过吗?哦,不应该是下!你们知道吗?五子棋可真的很有趣了,今天我就玩了下五子棋,那么五子棋又是什么...

  • 五子棋

    五子棋,你们玩过吗?哦,不应该是下!你们知道吗?五子棋可真的很有趣了,今天我就玩了下五子棋,那么五子棋又是什么棋呢...

  • iOS-五子棋

    导读 五子棋是程序猿比较熟悉的一款小游戏,相信很多人大学时期就用多种语言写过五子棋小游戏.笔者工作闲暇之余,试着用...

网友评论

      本文标题:ios 五子棋二

      本文链接:https://www.haomeiwen.com/subject/miknoqtx.html