charspan
2020-04-15 21:36
// 申明离点击位置最近的两条线(一横一竖),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:老师的五子棋边缘是不能落子的
真不错啊,这总结的好,优秀
iOS-五子棋大战
25731 学习 · 11 问题
相似问题