class GameMap: def __init__(self, max_size_x = float('inf'), max_size_y = float('inf')): self.max_size_x = max_size_x self.max_size_y = max_size_y self.data = {} def __str__(self): return str(self.data) def get_max_size_x(self): return self.size_x def get_max_size_y(self): return self.size_y def add_mark(self, x, y, player): # Can be 0 or can be a max value, so, # this is border-inclusive. if (x <= self.max_size_x and y <= self.max_size_y) and (x >= 0 and y >= 0): if (x, y) not in self.data: self.data[(x,y)] = player player.add_mark(x,y) else: errorMessage = "The mark is already busy by the Player " + str(self.data[(x, y)].get_name()) raise KeyError(errorMessage) else: errorMessage = "The mark" + str((x,y)) + " is beyond preset max values, max_x - " + str(self.max_size_x) + ", max_y - " + str(self.max_size_y) raise IndexError(errorMessage) def remove_mark(self, x, y): data.pop((x,y)) def clear_map(self): data.clear()