implementar alterações da classe 'Agente'

This commit is contained in:
2026-03-19 21:33:18 +00:00
parent 20c0083217
commit f3a7493ff8
2 changed files with 23 additions and 23 deletions

View File

@ -11,7 +11,7 @@ import modules.interaccoes as ModInteraccoes
flags = 0 flags = 0
def devolveCor(agente: Agente | None) -> tuple[int, int, int, int]: def devolveCor(agente: Agente) -> tuple[int, int, int, int]:
if type(agente) is None: if type(agente) is None:
return (0, 0, 0, 0) return (0, 0, 0, 0)
else: else:
@ -31,7 +31,7 @@ def devolveCor(agente: Agente | None) -> tuple[int, int, int, int]:
def criarTabuleiro( def criarTabuleiro(
surface: pg.Surface, surface: pg.Surface,
dimensao_tabuleiro: tuple[int, int], dimensao_tabuleiro: tuple[int, int],
mapa: Mapa | None, mapa: Mapa,
) -> None: ) -> None:
dimensoes_surface_principal: tuple[int, int] = surface.get_size() dimensoes_surface_principal: tuple[int, int] = surface.get_size()
max_altura: int = int((dimensoes_surface_principal[0] - 20) / dimensao_tabuleiro[0]) max_altura: int = int((dimensoes_surface_principal[0] - 20) / dimensao_tabuleiro[0])

View File

@ -7,30 +7,31 @@ from modules.agente import Agente
class Mapa: class Mapa:
''' definição de classe Mapa, que descreve um mapa com dimensão 'dimensao'. """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 a representação desse mapa fica guardado em 'mundo', que é uma lista de
listas, e cada posição guarda um objecto 'Agente' listas, e cada posição guarda um objecto 'Agente'
''' """
dimensao: tuple[int, int] dimensao: tuple[int, int]
mundo: list[list[Agente | None]] mundo: list[list[Agente]]
id_mapa: int id_mapa: int
def __init__(self, dimensao: tuple[int, int], aleatorio: bool = False): def __init__(self, dimensao: tuple[int, int]):
self.mundo = [] self.mundo = []
self.dimensao = dimensao self.dimensao = dimensao
self.mundo = self.inicializar() self.mundo = self.inicializar()
self.id_mapa = id(self) self.id_mapa = id(self)
def __str__(self): def __str__(self):
return f'Dados Mapa ({self.id_mapa})\n \ return f"Dados Mapa ({self.id_mapa})\n \
\tdimensao: {self.dimensao[0]} x {self.dimensao[1]}' \tdimensao: {self.dimensao[0]} x {self.dimensao[1]}"
def inicializar(self) -> list[list[Agente | None]]: def inicializar(self) -> list[list[Agente]]:
# inicializar mundo # inicializar mundo
for _ in range(0, self.dimensao[0]): for _ in range(0, self.dimensao[0]):
mundo_tmp: list[Agente | None] = [] mundo_tmp: list[Agente] = []
for _ in range(0, self.dimensao[1]): for _ in range(0, self.dimensao[1]):
mundo_tmp.append(None) mundo_tmp.append(Agente())
self.mundo.append(mundo_tmp) self.mundo.append(mundo_tmp)
return self.mundo return self.mundo
@ -39,15 +40,14 @@ class Mapa:
m, n = 0, 0 m, n = 0, 0
for m in range(0, self.dimensao[0]): for m in range(0, self.dimensao[0]):
for n in range(0, self.dimensao[1]): for n in range(0, self.dimensao[1]):
print(f'{self.mundo[m][n]}', end='') print(f"{self.mundo[m][n]}", end="")
print('') print("")
def posicao(self, posicao: tuple[int, int]) -> Agente | None: def posicao(self, posicao: tuple[int, int]) -> Agente:
''' devolver objecto que está na 'posicao' """devolver objecto que está na 'posicao'"""
'''
# verificar limites # verificar limites
if posicao[0] > self.dimensao[0] or posicao[0] < 0: if posicao[0] > self.dimensao[0] or posicao[0] < 0:
return None raise ValueError("posicao fora dos limites")
if posicao[1] > self.dimensao[1] or posicao[1] < 0: if posicao[1] > self.dimensao[1] or posicao[1] < 0:
return None raise ValueError("posicao fora dos limites")
return self.mundo[posicao[0]][posicao[1]] return self.mundo[posicao[0]][posicao[1]]