Пример #1
0
    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)
Пример #2
0
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()
Пример #3
0
    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)