分享一下我的方法
// 申明離點擊位置最近的兩條線(一橫一豎),h 代表橫線編號,v 代表豎線編號,編號順序從左到右,從上到下,從0開始編號
? ? NSUInteger h = 0 , v = 0;
? ? // 每個小正方形的邊長
? ? float squareLength = self.frame.size.width / (piecesNumber + 1);
? ? // 遍歷查找豎線編號
? ? for (NSUInteger i = 0; i <= piecesNumber; i ++) {
? ? ? ? // 觸摸點x坐標(biāo)在第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坐標(biāo)離第i條豎線和第i+1條豎線的那一條最近,離得越近x坐標(biāo)相減的絕對值越小
? ? ? ? ? ? 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坐標(biāo)在第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坐標(biāo)離第i條橫線和第i+1條橫線的那一條最近,離得越近y坐標(biāo)相減的絕對值越小
? ? ? ? ? ? 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:老師的五子棋邊緣是不能落子的
2022-01-15
真不錯啊,這總結(jié)的好,優(yōu)秀