|
import { config } from "./config"; |
|
|
|
export const position2Coordinate = function (position, size) { |
|
return [Math.floor(position / size), position % size]; |
|
}; |
|
|
|
export const coordinate2Position = function (x, y, size) { |
|
return x * size + y; |
|
}; |
|
|
|
|
|
export const isLine = function (a, b, size) { |
|
const maxDistance = config.inLineDistance; |
|
const [x1, y1] = position2Coordinate(a, size); |
|
const [x2, y2] = position2Coordinate(b, size); |
|
return ( |
|
(x1 === x2 && Math.abs(y1 - y1) < maxDistance) || |
|
(y1 === y2 && Math.abs(x1 - x2) < maxDistance) || |
|
(Math.abs(x1 - x2) === Math.abs(y1 - y2) && Math.abs(x1 - x2) < maxDistance) |
|
); |
|
} |
|
|
|
export const isAllInLine = function (p, arr, size) { |
|
for (let i = 0; i < arr.length; i++) { |
|
if (!isLine(p, arr[i], size)) { |
|
return false; |
|
} |
|
} |
|
return true; |
|
} |
|
export const hasInLine = function (p, arr, size) { |
|
for (let i = 0; i < arr.length; i++) { |
|
if (isLine(p, arr[i], size)) { |
|
return true; |
|
} |
|
} |
|
return false; |
|
} |