""" game_board.py author: Caleb Scott Representation of the game board/space. Ideally, this module can be modified/swapped if the geometry of the game changes (2D-3D, etc.) """ # CLASSES ----------------------------------------------------------- class FlatWorld: def __init__(self, init_space: list): # We assume that the initial space is a rectangular 2D array # Initialize the world space (2D array) self.space = init_space self.width = len(init_space[0]) self.height = len(init_space) def get_at(self, x, y): """ Returns object located at (x,y) coordinate of space. """ if (x >= 0 and x < self.width) and (y >= 0 and y < self.height): return self.space[x][y] else: return None def set_at(self, x, y, object): """ Sets object located at (x,y) coordinate of space. """ if (x >= 0 and x < self.width) and (y >= 0 and y < self.height): self.space[x][y] = object return True else: return False class LayeredFlatWorld: def __init__(self, layers: dict): # We assume that layers is a dictionary of 2D arrays. # Initialize the layers of 2D space self.layers = {} for layer in layers.keys(): self.layers[layer] = FlatWorld(layers[layer]) def get_at(self, x, y, layer): """ Gets object at (x,y) coordinate at layer """ return self.layers[layer].get_at(x, y) def set_at(self, x, y, layer, object): """ Sets object located at (x,y) coordinate at layer """ self.layers[layer].set_at(x, y, object)