# 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: dimensao: tuple[int, int] mundo: list def __init__(self, dimensao: tuple[int, int], aleatorio: bool = False): self.mundo = [] self.dimensao = dimensao self.mundo = self.inicializar(aleatorio=aleatorio) 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, aleatorio: bool = False) -> list: nomes_estrategias = ModEstrategia.listaNomesEstrategias() # inicializar mundo for _ in range(0, self.dimensao[0]): mundo_tmp: list = [] for _ in range(0, self.dimensao[1]): mundo_tmp.append(Agente(random.choice(nomes_estrategias))) 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].pontuacao:2} ', end='') print('') def posicao(self, posicao: tuple[int, int]) -> Agente | None: # 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]]