为了账号安全,请及时绑定邮箱和手机立即绑定

分享一下我的方法

// 申明离点击位置最近的两条线(一横一竖),h 代表横线编号,v 代表竖线编号,编号顺序从左到右,从上到下,从0开始编号

    NSUInteger h = 0 , v = 0;

    // 每个小正方形的边长

    float squareLength = self.frame.size.width / (piecesNumber + 1);

    // 遍历查找竖线编号

    for (NSUInteger i = 0; i <= piecesNumber; i ++) {

        // 触摸点x坐标在第i条竖线和第i+1条竖线之间

        if (i * squareLength <= point.x && point.x < (i + 1) * squareLength) {

            // i = 0 就是第一条竖线

            if (i == 0) {

                v = 1;

                break;

            }

            // i = piecesNumber 就是最后一条竖线

            if (i == piecesNumber) {

                v = piecesNumber;

                break;

            }

            // 判断触摸点x坐标离第i条竖线和第i+1条竖线的那一条最近,离得越近x坐标相减的绝对值越小

            if (fabs(i * squareLength - point.x) >= fabs((i + 1) * squareLength - point.x)) {

                v = i + 1;

                break;

            } else {

                v = i;

                break;

            }

        }

    }

    // 遍历查找横线编号

    for (NSUInteger i = 0; i <= piecesNumber; i ++) {

        // 触摸点y坐标在第i条横线和第i+1条横线之间

        if (i * squareLength <= point.y && point.y < (i + 1) * squareLength) {

            // i = 0 就是第一条横线

            if (i == 0) {

                h = 1;

                break;

            }

            // i = piecesNumber 就是最后一条横线

            if (i == piecesNumber) {

                h = piecesNumber;

                break;

            }

            // 判断触摸点y坐标离第i条横线和第i+1条横线的那一条最近,离得越近y坐标相减的绝对值越小

            if (fabs(i * squareLength - point.y) >= fabs((i + 1) * squareLength - point.y)) {

                h = i + 1;

                break;

            } else {

                h = i;

                break;

            }

        }

    }

    NSLog(@"第%tu条竖线, 第%tu条横线", v, h);


ps:老师的五子棋边缘是不能落子的


正在回答

1 回答

真不错啊,这总结的好,优秀

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

分享一下我的方法

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信