import pygame import numpy as np tile_size = 64 MAT_ISO = np.array([[0.5, 0.25], [-0.5, 0.25]]) class MapTile(pygame.sprite.Sprite): def __init__(self, x: int, y: int): super(MapTile, self).__init__() self.image = pygame.image.load("tileset/placeholder.png") self.rect = self.image.get_rect() self.rect.center = (x, y) class IsoMapTile(MapTile): def __init__( self, u: int, v: int, elevation: int = 0, origin: np.ndarray = np.array([100, 100]), ): vec = np.array([u, v]) @ MAT_ISO * tile_size + origin super(IsoMapTile, self).__init__(vec[0], vec[1] + tile_size / 8 * elevation) self.u = u self.v = v self.elevation = elevation def update(self, dx: int, dy: int): self.rect.move_ip(-dx, -dy)