# funções associadas a operações com o Mapa #import random #from modules import agente from modules.agente import Agente #import modules.estrategia as ModEstrategia class Mapa: ''' definição de classe Mapa, que descreve um mapa com dimensão 'dimensao'. a representação desse mapa fica guardado em 'mundo', que é uma lista de listas, e cada posição guarda um objecto 'Agente' ''' dimensao: tuple[int, int] mundo: list[list[Agente | None]] id_mapa: int def __init__(self, dimensao: tuple[int, int], aleatorio: bool = False): self.mundo = [] self.dimensao = dimensao self.mundo = self.inicializar() self.id_mapa = id(self) def __str__(self): return f'Dados Mapa ({self.id_mapa})\n \ \tdimensao: {self.dimensao[0]} x {self.dimensao[1]}' def inicializar(self) -> list[list[Agente | None]]: # inicializar mundo for _ in range(0, self.dimensao[0]): mundo_tmp: list[Agente | None] = [] for _ in range(0, self.dimensao[1]): mundo_tmp.append(None) self.mundo.append(mundo_tmp) return self.mundo def mostrar(self) -> None: # mostrar mundo m, n = 0, 0 for m in range(0, self.dimensao[0]): for n in range(0, self.dimensao[1]): print(f'{self.mundo[m][n]}', end='') print('') def posicao(self, posicao: tuple[int, int]) -> Agente | None: ''' devolver objecto que está na 'posicao' ''' # verificar limites if posicao[0] > self.dimensao[0] or posicao[0] < 0: return None if posicao[1] > self.dimensao[1] or posicao[1] < 0: return None return self.mundo[posicao[0]][posicao[1]]