def test_neighbor_coordinates(self): g = Grid(hexagon_type=POINTY, coordinate_system=OFFSET_ODD_ROWS) n = g.neighbor_coordinates((1, 1), validate=False) expected = [(2, 1), (2, 0), (1, 0), (0, 1), (1, 2), (2, 2)] self.assertSequenceEqual(n, expected) g = Grid(hexagon_type=POINTY, coordinate_system=OFFSET_EVEN_ROWS) n = g.neighbor_coordinates((1, 1), validate=False) expected = [(2, 1), (1, 0), (0, 0), (0, 1), (0, 2), (1, 2)] self.assertSequenceEqual(n, expected) g = Grid(hexagon_type=FLAT, coordinate_system=OFFSET_ODD_COLUMNS) n = g.neighbor_coordinates((1, 1), validate=False) expected = [(2, 2), (2, 1), (1, 0), (0, 1), (0, 2), (1, 2)] self.assertSequenceEqual(n, expected) g = Grid(hexagon_type=FLAT, coordinate_system=OFFSET_EVEN_COLUMNS) n = g.neighbor_coordinates((1, 1), validate=False) expected = [(2, 1), (2, 0), (1, 0), (0, 0), (0, 1), (1, 2)] self.assertSequenceEqual(n, expected) g = Grid(hexagon_type=POINTY, coordinate_system=AXIAL) n = g.neighbor_coordinates((1, 1), validate=False) expected = [(2, 1), (2, 0), (1, 0), (0, 1), (0, 2), (1, 2)] self.assertSequenceEqual(n, expected) # Flat topped vs pointy topped in axial coordinates just rotates the grid g = Grid(hexagon_type=FLAT, coordinate_system=AXIAL) n = g.neighbor_coordinates((1, 1), validate=False) expected = [(2, 1), (2, 0), (1, 0), (0, 1), (0, 2), (1, 2)] self.assertSequenceEqual(n, expected) g = Grid(hexagon_type=POINTY, coordinate_system=CUBIC) n = g.neighbor_coordinates((2, 0, -2), validate=False) expected = [(3, -1, -2), (3, 0, -3), (2, 1, -3), (1, 1, -2), (1, 0, -1), (2, -1, -1)] self.assertSequenceEqual(n, expected) # Flat topped vs pointy topped in cubic coordinates just rotates the grid g = Grid(hexagon_type=FLAT, coordinate_system=CUBIC) n = g.neighbor_coordinates((2, 0, -2), validate=False) expected = [(3, -1, -2), (3, 0, -3), (2, 1, -3), (1, 1, -2), (1, 0, -1), (2, -1, -1)] self.assertSequenceEqual(n, expected)
def main(): grid = Grid(coordinate_system=OFFSET, hexagon_type=FLAT) grid[-1, -1] = None grid[0, 0] = None grid[0, 1] = None grid[1, 0] = None grid[1, 1] = None grid[1, 2] = None neighbors = grid.neighbor_coordinates((0, 0)) line = grid.line_coordinates((0, 0), (4, 4), validate=False) draw = DrawGrid(grid) draw.draw_hexagons(grid.keys(), labels=True, fill='#7070ff') draw.draw_hexagons(neighbors, labels=True, fill='#ff7070') draw.draw_hexagons(line, labels=True, fill='#70ff70') draw.draw()
def test_ring_coordinates(self): g = Grid(HexagonType.FLAT, CoordinateSystem.AXIAL) for i in range(5): for j in range(5): g[i, j] = None expected = [(0, 2), (1, 1), (2, 0)] self.assertCountEqual(g.ring_coordinates((0, 0), 2, validate=True), expected) expected = g.neighbor_coordinates((1, 2), validate=True) self.assertCountEqual(g.ring_coordinates((1, 2), 1, validate=True), expected) g = Grid(hexagon_type=HexagonType.FLAT, coordinate_system=CoordinateSystem.CUBIC) for i in range(-3, 4): for j in range(-3, 4): c = Grid.convert((i, j), CoordinateSystem.AXIAL, CoordinateSystem.CUBIC) g[c] = None expected = [(0, -3, 3), (1, -3, 2), (2, -3, 1), (3, -3, 0)] self.assertCountEqual(g.ring_coordinates((3, -6, 3), 3), expected)