diff --git a/pos.py b/pos.py new file mode 100644 index 0000000..a82f2e8 --- /dev/null +++ b/pos.py @@ -0,0 +1,52 @@ +# position implementation + +class TwoDUtils: + mappings = { + 'a': 0, + 'b': 1, + 'c': 2, + 'd': 3, + 'e': 4, + 'f': 5, + 'g': 6, + 'h': 7, + 'i': 8, + } + reverse = {i[1]:i[0] for i in mappings.items()} + def __init__(self): + pass + +class TwoDPos: + g = 0 + l = 1 + def __init__(self, mode, param): + if mode == TwoDPos.g: + self.pos = ( + TwoDUtils.mappings[param[0]], + int(param[1]) - 1, + ) + elif mode == TwoDPos.l: + self.pos = ( + param[0] * 3 + param[2], + param[1] * 3 + param[3] + 1, + ) + + def glob(self): + ret = [] + ret.append(TwoDUtils.reverse[self.pos[0]]) + ret.append(str(self.pos[1] + 1)) + + return ''.join(ret) + + def local(self): + subboard = ( + int(self.pos[0] / 3), + int(self.pos[1] / 3), + ) + + localpos = ( + self.pos[0] % 3, + self.pos[1] % 3, + ) + + return (subboard[0], subboard[1], localpos[0], localpos[1])